간단한 부트 스트 래퍼를 만들려고합니다.Ninject 및 DependencyResolver를 사용하여 ASP.NET MVC 3에서 부트 스트 래퍼 만들기
public class RegisterRoutes : IBootstrapperTask
{
private readonly RouteCollection routes;
public RegisterRoutes(RouteCollection routes)
{
this.routes = routes;
}
public RegisterRoutes() : this(RouteTable.Routes)
{
}
public void Execute()
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
}
}
내 Global.asax에 외모 : 부트 스트 래퍼를 통해 경로를 등록하는 것이었다에
public interface IBootstrapperTask
{
void Execute();
}
내 첫 번째 시도 :
public static void Run()
{
var tasks = DependencyResolver.Current.GetServices<IBootstrapperTask>();
foreach (var task in tasks)
{
task.Execute();
}
}
IBootstrapperTask 인터페이스처럼 보이는 :처럼 내 boostrapper 코드가 보인다 like :
protected void Application_Start()
{
DependencyResolver.SetResolver(new NinjectDependencyResolver());
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
Bootstrapper.Run();
}
그리고 내 NinjectDependencyResolver은 다음과 같습니다 VirtualPathProvider 일치하는 바인딩을 사용할 수 없으며, 유형이 활성화
오류 : 나는 다음과 같은 예외가이 코드를 실행하려고 할 때, 그러나
kernel.Bind<IBootstrapperTask>().To<RegisterRoutes>();
자기 구속력이 없다.
활성화 경로 :
3) 형 RouteCollection의 생성자 파라미터 virtualPathProvider에 종속 VirtualPathProvider 사출
2) 형 RegisterRoutes
1) 요청의 생성자의 매개 경로에 종속 RouteCollection 사출 IBootstrapperTask에 대한
어떤 도움을 주시면 대단히 감사하겠습니다.
편집
일에 내 예를 들어 필요했다 그 누락 된 바인딩 :이 이미이 바인딩을 가지고 있기 때문에 당신이 Ninject에 MVC 확장을 사용하는 경우 필요하지 않습니다 바인딩
kernel.Bind<RouteCollection>().ToConstant(RouteTable.Routes);
그리고 아래의 답변에 따라 상자 밖의 몇 가지.
Remo, 내 문제를 해결할 수있는 확장 기능을 사용하는 이유를 설명해 주시겠습니까? 특정 바인딩이 이미 저에게 설정 되었기 때문입니까 (이 경우 VirtualPathProvider와 같은)? 더 중요한 것은, 만약 내가 확장 기능을 사용하지 않기로 결정한다면, 어떤 종류의 바인딩이 내 문제를 해결할 수 있을까? 도와 주셔서 감사합니다. – Thomas
nesessary 바인딩을 추가합니다. 자신의 구현을 수정하기 위해 추가해야 할 부분을 분석하지 않아서 죄송합니다. 모든 사용자 지정 구현을 지원할 시간이 필요하지 않습니다. 구현을 지원하는 데는 이미 많은 시간이 걸립니다. 그리고 나는 관습과 관련된 점을 보지 못합니다. –