В настоящее время я работаю над приложением WP 8.1 (время выполнения, а не silverlight), и я хочу найти контейнер IoC. Я использую Caliburn.Micro, это здорово, потому что он использует конструкторную инъекцию в моделях просмотра, но у меня также есть фоновый агент, который не может получить доступ к контейнеру IoC от Caliburn.Micro.Контейнер IoC для Windows Phone 8.1
В моем приложении, я могу сделать что-то вроде этого:
...
public MyViewModel(ISyncService syncService, IOtherService otherService)
{
_syncService = syncService;//and so on for all services
}
Или что-то вроде этого:
var syncService = IoC.Get<ISyncService>();
В мой агент, я не могу сделать то же самое, потому что это Caliburn бесполезно, поэтому я вынужден сделать что-то вроде этого:
var syncService = new SyncService(new AppSettings(), new AuthenticationService(webClient),
new PromotionalMessagesService(webClient)...));
Я думаю, вы поняли суть. ISyncService имеет 7 сервисов, требуемых в конструкторе, и каждая служба имеет больше в своем ctor. Другой недостаток, помимо уродливого кода, заключается в том, что если я что-то изменяю в ctor сервиса, я должен обновлять его здесь каждый раз.
Знаете ли вы хороший контейнер IoC для WP 8.1 или, может быть, у вас есть лучшая идея для этой проблемы?
Спасибо, я не знал об этом. Я думаю, что попробую Autofac и посмотрю, как это работает. – thewindev