该项目是Unity doc的副本,但它引发了一个我无法解决的错误
错误是:
未处理的例外:
Unity.Exceptions.ResolutionFailedException:解析 依赖失败,type ='System.Object',name ='MainPage'。 发生异常时:调用构造函数 SecondPrims.Views.MainPage()。例外是:ResolutionFailedException - 依赖项的解析失败,type ='SecondPrims.ViewModels.MainPageViewModel',name ='(none)'。例外 发生在:同时解决。例外情况是: InvalidOperationException - 当前类型ITextToSpeech是一个 界面,不能构造。你错过了类型映射吗? - - - - - - - - - - - - - - - - - - - - - - - - 当时例外,容器是:解决 SecondPrims.ViewModels.MainPageViewModel,(none)解析参数 'textToSpeech'的构造函数 SecondPrims.ViewModels.MainPageViewModel(ITextToSpeech textToSpeech) 解决ITextToSpeech,(无)
-----------------------------------------------在例外的时候,容器是:解决 SecondPrims.Views.MainPage,MainPage(从System.Object映射, 主页) 解析SecondPrims.Views.MainPage,MainPage 调用构造函数SecondPrims.Views.MainPage()发生了
项目文件: http://www.mediafire.com/file/fs656jowkiy2bd9/SecondPrims.zip
答案 0 :(得分:0)
您是否正确添加了依赖项?
containerRegistry.RegisterForNavigation<MainPage>();
containerRegistry.Register<ITextToSpeech, TextToSpeech>();
答案 1 :(得分:0)
答案是因为在每个平台上注册了ITextToSpeech接口。
https://stackoverflow.com/a/50493741/478162
Prism 7改变了这种行为,因为它实际上是一种反模式 依靠二级容器。你只需要注册你的 IPlatformInitializer中的TextToSpeech服务如:
public class iOSInitializer : IPlatformInitializer
{
public void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.Register<ITextToSpeech, TextToSpeech_iOS>();
}
}