그냥 Ninject 2 및 ASP.NET MVC 2를 시작하려고합니다.이 튜토리얼 http://www.craftyfella.com/2010/02/creating-aspnet-mvc-2-controller.html을 따라 Ninject를 사용하여 컨트롤러 팩토리를 만들고 바인드하려면 구체적인 구현에 대한 첫 번째 추상화. 이제는 다른 어셈블리 (구체적으로 SQL 리포지토리가있는 어셈블리)에서 리포지토리 형식을로드하려고합니다.Ninject 2 + ASP.NET MVC 2 외부 어셈블리의 바인딩 유형
Global.asax.cs
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());
}
컨트롤러 공장 : 여기에 내 코드 그냥 때 지금
public class ExampleConfigModule : NinjectModule
{
public override void Load()
{
Bind<Domain.CommunityUserRepository>().To<SQLCommunityUserRepository>();
}
}
:에서
public class Kernelhelper
{
public static IKernel GetTheKernel()
{
IKernel kernel = new StandardKernel();
kernel.Load(System.Reflection.Assembly.Load("MyAssembly"));
return kernel;
}
}
public class MyControllerFactory : DefaultControllerFactory
{
private IKernel kernel = Kernelhelper.GetTheKernel();
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null ? null : (IController)kernel.Get(controllerType);
}
}
는 "하여 MyAssembly"모듈이 내 진입 점에서 MockRepository 객체를 두드리는 것은 잘 작동하지만 저장소가 필요한 컨트롤러는 정상적으로 작동합니다. kernel.Load (System.Reflection.Assembly.Load ("MyAssembly")); 또한 작업을 수행하고 모듈을 등록하지만 저장소를 필요로하는 컨트롤러를 호출하자마자 Ninject에서 ActivationException을 얻습니다.
사용할 수있는 바인딩이없고 해당 유형이 자체 바인딩 할 수 없습니다. 활성화 경로 : AccountController
에 대한 1) 요청 형 AccountController의 생성자의 매개 변수 _rep에 의존 CommunityUserRepository의 2) 주입사람이 나에게 정말 중요한 측면은 외부 어셈블리에서 바인딩 유형을위한 가장 좋은 방법은 예를 (줄 수 의존성 주사의)? 고맙습니다!
내 구체적인 구현의 생성자에는 연결 문자열이 필요합니다. 이제는 그걸 Ninject에 알려주는 방법을 찾아야합니다 ... – hoetz