从 Microsoft.Maui.Controls.Application 中的 IServiceProvider 解析 MainPage

Bri*_*ten 5 .net c# maui

我创建了一个新的 dotnet maui 项目并希望MainPageIServiceProvider.

我添加到MauiProgram.cs行了builder.Services.AddSingleton<MainPage>();。代替 (App.xaml.cs):

    public partial class App : Microsoft.Maui.Controls.Application
    {
        public App()
        {
            InitializeComponent();
            MainPage = new MainPage();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想检索或以某种方式访问MauiApp​​以MainPage解析IServiceProvider。像这样的东西:

    public partial class App : Microsoft.Maui.Controls.Application
    {
        public App()
        {
            InitializeComponent();
            var mauiApp = (MauiApp)this;
            MainPage = mauiApp.Services.GetService(typeof(MainPage)) as ContentPage;
        }
    }
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

小智 4

在 MauiProgram.cs 中:

为您需要的任何服务添加单例:

   public static MauiApp CreateMauiApp()
    {
       builder.Services.AddSingleton<MainPage>();
       builder.Services.AddSingleton<IGoodbyeWorldService, GoodbyeWorldService>();
    }
Run Code Online (Sandbox Code Playgroud)

在 App.Xaml.cs 中:

将 MainPage 包含在 App 方法的参数中并分配给 MainPage:

    public App(MainPage page) 
    {
        InitializeComponent();
        MainPage = page;
    }
Run Code Online (Sandbox Code Playgroud)

然后在 MainPage.xaml.cs 中将您需要的服务包含在参数中:

    public MainPage(IGoodbyeWorldService service)
    {
     InitializeComponent();
     lblOne.Text = service.SayGoodbye();
    }
Run Code Online (Sandbox Code Playgroud)

  • 我正在寻找的是“公共应用程序(IServiceProvider serviceProvider)”。谢谢! (3认同)