Добавление расширения Unity для диагностики c в Prism Xamarin.Forms - PullRequest
0 голосов
/ 27 марта 2020

Я получаю исключение Unity.ResolutionFailedException, и оно намекает на то, что я могу получить дополнительную информацию, добавив расширение Diagnosti c:

Unity.ResolutionFailedException: Для получения дополнительной информации добавьте расширение Diagnosti c: Container.AddExtension (new Diagnosti c ())

Я попытался добавить расширение в конструктор App.xaml.cs и в RegisterTypes, но ни один из них не работает (то же сообщение) .

public App(IPlatformInitializer initializer)
    : base(initializer)
{
    this.Container.GetContainer().AddExtension(new Diagnostic());
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
    containerRegistry.GetContainer().AddExtension(new Diagnostic());
    ...

Вкл. http://unitycontainer.org/tutorials/diagnostic.html, в нем говорится:

ВАЖНО Методы расширения не будут работать на интерфейсе IUnityContainer. Он доступен только на самом UnityContainer.

Что объясняет поведение, которое я вижу. Так можно ли добавить диагностику c расширение?

1 Ответ

0 голосов
/ 27 марта 2020

Так можно ли добавить расширение c для диагностики?

Вы можете просто привести к UnityContainer:

((UnityContainer)containerRegistry.GetContainer()).AddExtension(new Diagnostic());

В качестве альтернативы, переопределить PrismApplication.CreateContainerExtension и добавьте расширение к контейнеру напрямую:

protected override IContainerExtension CreateContainerExtension()
{
    var container = new UnityContainer();
    container.AddExtension( new Diagnostic() );
    return new UnityContainerExtension( container );
}
...