Prism WPF (Unity) - Зарегистрируйте выражения, которые выполняются для создания объектов - PullRequest
1 голос
/ 06 мая 2020

Есть ли способ зарегистрировать метод с помощью IContainerRegistry, чтобы метод вызывался каждый раз при разрешении объекта?

например: builder.Register (c => new ConfigReader (" mysection ")). As ();

1 Ответ

1 голос
/ 06 мая 2020

Для Unity в абстракции контейнера Prism есть Register(Type type, Func<object> factoryMethod). Это должно делать именно то, что вы хотите:

containerRegistry.Register<IConfigReader>( () => new ConfigReader( "mySection" ) );

Но это только в Prism 8.

В Prism 7 используется исходный контейнер

containerRegistry.GetContainer().RegisterFactory( typeof(IConfigReader), x => new ConfigReader( "mySection" ) );

С Prism 6 и ранее это стало еще проще, потому что контейнер доступен сразу и его не нужно раскапывать:

Container.RegisterFactory( typeof(IConfigReader), x => new ConfigReader( "mySection" ) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...