Регистрация и разрешение контейнеров DI в Prism 7 - формы Xamarin

Я использую призму 7 для моего нового приложения форм xamarin. Я прошел этот документ.

У меня есть пара вопросов:

  1. Существует несколько интерфейсов DI, которые я регистрирую после запуска приложения. Мы можем использовать IContainerRegistry в app.xaml.cs для регистрации, но если мы хотим зарегистрироваться или разрешить на других страницах, есть ли способ заставить это сделать, кроме сохранения IContainerRegistry а также IContainerRegistry экземпляр из app.xaml.cs и использовать его, где мы хотим?

  2. Чтобы зарегистрировать тип синтаксис:

    ContainerRegistry.RegisterInstance<ITextService>(new TextService());

Но как мы можем зарегистрировать синглтон? Я видел несколько примеров, но я не очень понял, как это сделать? кто-нибудь может показать пример?

ОБНОВИТЬ:

Чтобы зарегистрировать синглтон, синтаксис выглядит так
containerRegistry.RegisterSingleton<ILoggerFacade, EmptyLogger>(); но если мы просто передадим тип без создания экземпляра (в данном случае, экземпляра EmptyLogger), как мы сможем правильно их зарегистрировать?

1 ответ

Решение

Чтобы зарегистрировать тип синтаксис: ContainerRegistry.RegisterInstance<ITextService>(new TextService());

это регистрирует экземпляр не типа, кстати, для регистрации типа сделать ContainerRegistry.Register<IAnInterface, SomeImplementation>();

Но как мы можем зарегистрировать синглтон?

ContainerRegistry.RegisterSingleton<ITextService, TextService>(); делает это, и, между прочим, экземпляр является одноэлементным по своей природе (поскольку контейнер di всегда должен внедрить один зарегистрированный вами экземпляр, поскольку он не может самостоятельно создавать новые экземпляры)

Есть ли способ получить сделать это, кроме как сохранить IContainerRegistry а также IContainerRegistry экземпляр из app.xaml.cs и использовать его там, где мы хотим?

Я рекомендую регистрировать все в одном месте, а не разбрасывать регистрации по всему проекту. Но если вы полны решимости, вы можете иметь IContainerRegistry вводить в любом месте и зарегистрировать свои вещи.

Другие вопросы по тегам