Проект является копией 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
Необработанное исключение:
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
Ответ из-за регистрации интерфейса 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>(); } }
Правильно ли вы добавляете свои зависимости?
containerRegistry.RegisterForNavigation<MainPage>(); containerRegistry.Register<ITextToSpeech, TextToSpeech>();