У меня есть приложение ASP.NET MVC с использованием Ninject3 (установка NuGet). Раствор содержит:Как (не) указать область в библиотеках классов с помощью Ninject3
- проект MVC (состав корневых);
- проект модели домена;
- a Проект уровня данных;
- проект планировщика (выполнение запланированных заданий в службе Windows и проведение альтернативы состав корень);
- некоторые другие проекты.
Я следую за подходом, чтобы иметь множество небольших модулей, расположенных по проектам, определяющим привязки. Два корня композиции используют точно такие же привязки.
Я не могу понять, как настроить область для модулей в библиотеках классов. Например, с учетом этих привязок:
Bind<IDomainService1>()
.To<Service1Impl>()
.InSingletonScope(); //This should always be a singleton
Bind<IDomainService2>()
.To<Service2Impl>(); //No scope specified
Я всегда хочу один экземпляр Service1Impl
, в то время как возможности для Service2Impl
должна зависеть от корня композиции, используемой. Проект MVC должен иметь InRequestScope()
для Service2Impl
(и для всех других привязок с неопределенной областью). Проект Scheduler, который не запускается в контексте http, должен использовать InThreadScope()
.
Правильно ли этот подход? Если да, то каков правильный способ настройки этого поведения?