.NET MAUIでAppへ依存性注入できることがわかった。
以下のようにダミークラスとインターフェースを用意して、Appへ依存性注入できるかを確認してみた。
実行してみると、App()は正常終了した。
また、IServiceProvderは何もしなくても注入できた。
C#
// .NET8
//
// Dummy class and interface
//
public interface IGetter
{
string GetName();
}
public class Getter : IGetter
{
public string GetName() => "Success";
}
//
// MauiProgram.cs
//
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
#if DEBUG
builder.Logging.AddDebug();
#endif
// Registers dummy dependency
builder.Services.AddSingleton<IGetter, Getter>();
return builder.Build();
}
}
//
// App.xaml.cs
//
public partial class App
{
public App(IServiceProvider serviceProvider, IGetter getter)
{
InitializeComponent();
Debug.Assert(getter.GetName() == "Success");
var getter2 = serviceProvider.GetService<IGetter>();
Debug.Assert(ReferenceEquals(getter, getter2));
MainPage = new AppShell();
}
}
コメント