Я просто пытаюсь начать работу с Ninject 2 и ASP.NET MVC 2. Я следовал этому руководству http://www.craftyfella.com/2010/02/creating-aspnet-mvc-2-controller.html, чтобы создать фабрику контроллеров с Ninject и связать первый реферат с конкретной реализацией. Теперь я хочу загрузить тип репозитория из другой сборки (где находятся мои конкретные репозитории SQL), и я просто не могу заставить его работать. Вот мой код:
Global.asax.cs
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());
}
Контроллер Фабрика:
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» есть Модуль:
public class ExampleConfigModule : NinjectModule
{
public override void Load()
{
Bind<Domain.CommunityUserRepository>().To<SQLCommunityUserRepository>();
}
}
Теперь, когда я просто добавляю объект MockRepository в моей точке входа, он работает просто отлично, контроллер, которому нужен репозиторий, работает нормально. Kernel.Load (System.Reflection.Assembly.Load ("MyAssembly")); также выполняет свою работу и регистрирует модуль, но как только я вызываю контроллер, которому нужен репозиторий, я получаю исключение ActivationException от Ninject:
Нет доступных привязок, и тип не является самосвязываемым.
Путь активации:
2) Инъекция зависимости CommunityUserRepository в параметр _rep конструктора типа AccountController
1) Запрос на AccountController
Может ли кто-нибудь дать мне лучший пример для привязки типов из внешних сборок (что действительно является важным аспектом внедрения зависимостей)? Спасибо!