Я просто пытаюсь начать работу с 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());
}
Controller Factory:
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>();
}
}
Теперь, когда я просто slap в объекте MockRepository в моей точке входа работает отлично, контроллер, которому нужен репозиторий, отлично работает. Ядро.Load (System.Reflection.Assembly.Load («MyAssembly»)); также выполняет свою работу и регистрирует модуль, но как только я вызываю контроллер, который нуждается в репозитории, я получаю исключение ActivationException из Ninject:
Не найдено соответствующих привязок, и тип не является самопереключаемым. Путь Активации: 2) Инъекция CommunityUserRepository зависимости в параметре _rep конструктора типа AccountController 1) Запрос AccountController
Может кто-нибудь дать мне лучший пример практики для связывания типов из внешних сборок (который на самом деле является важным аспектом инъекции зависимостей)? Спасибо!
Глупый я, конструктор моей конкретной реализации требует строки подключения. Теперь я должен узнать, как сообщить об этом Ninject ... – hoetz