12

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

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

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

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

ответ

7

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

+0

Вы вызываете метод Resolve () непосредственно из контейнера IoC или используете оболочку для скрытия контейнера IoC из консольного приложения? – Rookian 2012-03-21 22:17:20

1

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

3

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

+0

Забыли Unity – 2010-12-02 06:45:48