IOC для консольного приложения?
Может ли кто-нибудь подумать о хорошем решении для ввода IOC в консольное приложение?
В настоящий момент мы просто используем статический класс со следующим методом:
public static T Resolve<T>()
{
return dependencyResolver.Resolve<T>();
}
Я бы хотел, чтобы этот опыт был плавным, но не может придумать способ достижения этого из консольного приложения.
Ответы
Ответ 1
Вам нужно будет сделать вызов локатора службы (Resolve<T>()
) где-нибудь. Трюк заключается в том, чтобы сделать его как можно более удобным. Для консольных приложений эта перезагрузка происходит в методе Main()
. Сделайте это там и снизьте эти Разрешить звонки в другом месте, и вы будете здоровы. Для большинства зависимостей используйте инъекцию конструктора.
Ответ 2
Консольные приложения не имеют каких-либо ограничений в отношении веб-приложения или приложения формы для IoC. Вы можете использовать любой из ваших вариантов (Spring, Ninject, Unity и т.д.). Большинство из них настраиваются с помощью XML файла вне консольного приложения, а некоторые, например, Ninjector, требуют конфигурации внутри вашего приложения.
Ответ 3
Я использовал Spring.NET из консольного приложения без проблем. Вам просто нужно указать его в свой файл конфигурации, и он подключит все зависимости. То, что вы затем делаете с этими объектами, зависит от того, что пытается сделать ваше консольное приложение, конечно.
Ответ 4
Оформить заказ Microsoft Unity.