csharpshare.com
Show / Hide Table of Contents

使用IPlatformInitializer

Gitee仓库 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)
    {
    }
}
本文导航
返回顶部 ©2022-2023 csharpshare.com    冀ICP备2022026743号-1     公安备案图标 冀公网安备 13052902000206号     Icons by Icons8