使用IPlatformInitializer
Prism-Documentation-CH
2023-1-12
[!注意] 下列文档只与Prism for Xamarin.Forms有关,
IPlatformInitializer
不在Prism.Wpf和Prism.Uno中使用。
在Xamarin.Forms中你可能已经阅读了如何在平台特定的代码中为实现类型添加依赖属性,然后使用Xamarin.Forms DependencyService解析该属性。这被认为是在使用适当的依赖注入容器时应该避免的主要反模式。正是出于这个原因,从Prism 7.0开始,Prism放弃了对DependencyService的所有支持。从Prism 6.3开始,引入了IPlatformInitializer
。这也使您可以轻松地向Prism的容器中注册类型。
IPlatformInitializer
是一个非常简单的接口,它只包含一个用于RegisterTypes
的方法。然后可以在创建应用程序时将IPlatformInitializer
传递到PrismApplication。对于iOS,您可能只需要以下代码:
public partial class AppDelegate : FormsApplicationDelegate, IPlatformInitializer
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App(this));
return base.FinishedLaunching(app, options);
}
public void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.Register<ITextToSpeech, TextToSpeech>();
}
}
请记住,您需要确保您的App中包含正确的构造函数重载,如下所示:
public class App : PrismApplication
{
public App(IPlatformInitializer initializer)
: base(initializer)
{
}
}