我创建了一个新的 dotnet maui 项目并希望MainPage从IServiceProvider.
我添加到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)
| 归档时间: |
|
| 查看次数: |
1758 次 |
| 最近记录: |