Подтвердить что ты не робот

IOC для консольного приложения?

Может ли кто-нибудь подумать о хорошем решении для ввода IOC в консольное приложение?

В настоящий момент мы просто используем статический класс со следующим методом:

public static T Resolve<T>()
{
    return dependencyResolver.Resolve<T>();
}

Я бы хотел, чтобы этот опыт был плавным, но не может придумать способ достижения этого из консольного приложения.

4b9b3361

Ответ 1

Вам нужно будет сделать вызов локатора службы (Resolve<T>()) где-нибудь. Трюк заключается в том, чтобы сделать его как можно более удобным. Для консольных приложений эта перезагрузка происходит в методе Main(). Сделайте это там и снизьте эти Разрешить звонки в другом месте, и вы будете здоровы. Для большинства зависимостей используйте инъекцию конструктора.

Ответ 2

Консольные приложения не имеют каких-либо ограничений в отношении веб-приложения или приложения формы для IoC. Вы можете использовать любой из ваших вариантов (Spring, Ninject, Unity и т.д.). Большинство из них настраиваются с помощью XML файла вне консольного приложения, а некоторые, например, Ninjector, требуют конфигурации внутри вашего приложения.

Ответ 3

Я использовал Spring.NET из консольного приложения без проблем. Вам просто нужно указать его в свой файл конфигурации, и он подключит все зависимости. То, что вы затем делаете с этими объектами, зависит от того, что пытается сделать ваше консольное приложение, конечно.

Ответ 4

Оформить заказ Microsoft Unity.