Разрешение зависимости - Xamarin - Единство - PullRequest
0 голосов
/ 23 мая 2018

Проект является копией Unity doc , но возникает ошибка, которую я не могу понять

Ошибка:

Необработанное исключение:

Unity.Exceptions.ResolutionFailedException: не удалось разрешить зависимость, type = 'System.Object', name = 'MainPage'.Исключительная ситуация при вызове конструктора SecondPrims.Views.MainPage ().Исключением является: ResolutionFailedException - Ошибка разрешения зависимости, type = 'SecondPrims.ViewModels.MainPageViewModel', name = '(none)'.Исключение произошло во время: при разрешении.Исключение: InvalidOperationException - Текущий тип, ITextToSpeech, является интерфейсом и не может быть создан.Вам не хватает отображения типов?----------------------------------------------- В это времяИсключением был контейнер: Resolving SecondPrims.ViewModels.MainPageViewModel, (нет) Параметр разрешения 'textToSpeech' конструктора SecondPrims.ViewModels.MainPageViewModel (ITextToSpeech textToSpeech) Resolving ITextToSpeech, none

none (нет)------------------------------------------- Во время исключенияконтейнер был следующим: Resolving SecondPrims.Views.MainPage, MainPage (сопоставлено с System.Object, MainPage): http://www.mediafire.com/file/fs656jowkiy2bd9/SecondPrims.zip

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Ответ из-за регистрации интерфейса ITextToSpeech на каждой платформе.

https://stackoverflow.com/a/50493741/478162

Prism 7 изменил это поведение, поскольку на самом деле это анти-шаблон, на который можно положитьсявторичный контейнер.Вам просто нужно зарегистрировать службу TextToSpeech в IPlatformInitializer, например:

public class iOSInitializer : IPlatformInitializer
{
    public void RegisterTypes(IContainerRegistry containerRegistry)
    {
        containerRegistry.Register<ITextToSpeech, TextToSpeech_iOS>();
    }
}
0 голосов
/ 23 мая 2018

Правильно ли вы добавляете свои зависимости?

containerRegistry.RegisterForNavigation<MainPage>();
containerRegistry.Register<ITextToSpeech, TextToSpeech>();
...