Как получить доступ к контейнеру Prism.ioc из модели представления? - PullRequest
0 голосов
/ 15 февраля 2019

Я переписываю проект, использующий MVVMLight, который использует ServiceLocation от Microsoft в качестве контейнера в приложении Prism.

Это следующий код, который я пытаюсь переписать в моей модели представления.

var class = ServiceLocator.Current.GetInstance<IClass>();

Я знаю, что именно так вы могли бы разрешить интерфейс, используя Prism.

var class = (iClass)containerRegistry.GetContainer().Resolve< iClass >();

Мой вопрос: как вы разрешаете интерфейс в модели представления, используя интерфейс, если у вас нет доступа к контейнеру?

1 Ответ

0 голосов
/ 15 февраля 2019

Существует свойство с именем Register в IContainerRegistry в переопределении RegisterTypes, вам нужно только зарегистрировать там свой интерфейс и свой класс

containerRegistry.Register<IYourClass, YourClass>();

, чтобы получить доступ к вашей модели представления, вы должны добавить интерфейс какпараметр

protected IYourClass _yourClass;
public LoginPageViewModel(IYourClass yourClass)
{
    _yourClass = yourClass;

}
...