Прежде всего, внедрение зависимостей является относительно новым для меня. Я выполнил первый проект с использованием Unity.MVC3, и теперь я хотел бы перейти на Ninject для нового проекта, так как он, кажется, самый популярный инжектор зависимостей для .Net проектов. Поэтому сейчас я пытаюсь использовать Ninject v2.2.1.4 с Ninject.MVC3 v2.2.2.0 в моем проекте.
В моем предыдущем проекте, где я использовал Unity, в моем классе Bootstrapper было что-то вроде следующего кода:
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
container.RegisterType<ITestService, TestService>();
container.RegisterType<IDatabaseFactory, DatabaseFactory>(new HierarchicalLifetimeManager());
container.RegisterType<IUnitOfWork, UnitOfWork>();
container.RegisterType<ILoggingService, LoggingService>();
container.RegisterControllers();
return container;
}
Теперь, мой новый проект, я заменил его на что-то вроде следующего кода в классе NinjectMVC3 (App_Start):
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ITestService>().To<TestService>();
//This does not compile:
//kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>(new HierarchicalLifetimeManager());
kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>();
kernel.Bind<ILoggingService>().To<LoggingService>();
}
Однако я не знаю, что мне делать с привязкой DatabaseFactory, поскольку обычно она требует использования HierarchicalLifetimeManager. Может кто-нибудь сказать мне, как правильно создать привязку для DatabaseFactory?