МОК для консольного приложения? - PullRequest
12 голосов
/ 13 ноября 2008

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

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

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

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

Ответы [ 4 ]

7 голосов
/ 12 января 2009

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

3 голосов
/ 13 ноября 2008

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

1 голос
/ 13 ноября 2008

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

1 голос
/ 13 ноября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...