У меня есть решение MVC 3, настроенное с помощью Ninject с использованием шаблона хранилища. Некоторые из моих привязок включают в себя:
kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>().InRequestScope();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();
kernel.Bind<IMyRepository>().To<MyRepository>().InRequestScope();
kernel.Bind<IMyService>().To<MyService>().InRequestScope();
kernel.Bind<ILogging>().To<Logging>().InSingletonScope();
Я также добавил консольное приложение в свое решение и хочу использовать тот же репозиторий и сервисы. Моя конфигурация Ninject для консольного приложения выглядит следующим образом:
kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>().InSingletonScope();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>().InSingletonScope();
kernel.Bind<IMyRepository>().To<MyRepository>().InSingletonScope();
kernel.Bind<IMyService>().To<MyService>().InSingletonScope();
kernel.Bind<ILogging>().To<Logging>().InSingletonScope();
Мой код консоли выглядит так:
static void Main(string[] args)
{
IKernel kernel = new StandardKernel(new IoCMapper());
var service = kernel.Get<IMyService>();
var logger = kernel.Get<ILogging>();
... do some processing here
}
Это прекрасно работает, но я хочу быть уверенным, что я правильно настраиваю Ninject для консольного приложения. Правильно ли использовать InSingletonScope () для всех моих привязок в консольном приложении? Должен ли я настроить его по-другому?