IContainerRegistryExtensions как зарегистрировать экземпляр как синглтон - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь перенести старый проект Prism Xamarin Form на последнюю версию Prism и XF.

Я бы хотел зарегистрировать фабрику для создания соединений, подобных этому Func<SQLiteConnection>:

public class AndroidInitializer : IPlatformInitializer
{
    string DbFilePath => Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "test.db3");

    public void RegisterTypes(IContainerRegistry container)
    {
        container.RegisterSingleton<Func<SQLiteConnection>>(() => new SQLiteConnection(DbFilePath));
    }
}

Тем не менее, это не работает, нет перегрузки, которая берет экземпляр, как я привык делать в старой версии Prism Unity.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Другая возможность - использовать RegisterInstance для регистрации одного экземпляра класса.Не уверен, что это влияет на время жизни объекта.

var connection = new SQLiteConnection(DbFilePath)
container.RegisterInstance(connection);
0 голосов
/ 05 июня 2018

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

Для DryIoc и Unity это будет:

containerRegistry.GetContainer().SomeContainerSpecificMethod();

, где SomeContainerSpecificMethod будет соответствовать тому, что было в Prism 6.3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...