У меня есть приложение Silverlight, и я ввел в него Unity
.Как получить экземпляр единственного контейнера?
Проблема у меня есть, я не знаю, как получить экземпляр контейнера.
Я создаю этот вход в инстанс в ApplicationStartup
методе на App
_container = new UnityContainer();
_container.RegisterType<IMyAppServiceAgent, MyAppServiceAgent>(new InjectionConstructor(OriginalHandlerId, W2OGuid, ServiceEndpointAddr));
и я пишу поглотитель
public IUnityContainer Container
{
get { return _container; }
}
Все отлично работает, и это, как я использую мой контейнер:
public static void CreateMemberSearch()
{
if (_memberSearch == null)
{
_memberSearch =
new MemberSearchViewModel((App.Current as App).Container.Resolve<IMyAppServiceAgent>());
}
}
Вышеприведенный пример от ViewModelLocator (от MVVM Light Toolkit
).
Мне нужно знать, как реорганизовать мой код, чтобы согласиться с принципами IOC
.
спасибо за ваш ответ Себастьян. Итак, если я добавлю IUnityContainer в конструктор ViemModelLocator, это будет приемлемо? – user278618
вопрос для Себастьяна. Я использую container.Resolve() для создания экземпляров моих объектов (например, при ленивой загрузке). Вы говорите, что этого не должно быть сделано? –
Anton
Интересно, особенно anti-pattern link. Но как решить проблемы, которые были решены с помощью шаблона-модели-локатора, используя статический шлюз к контейнеру DI? –