MAUI: ライブラリ内でハンドラーを登録する方法
ビルダーパターンと MauiAppBuilder の拡張メソッドを使って、.NET MAUI ライブラリの内側からビューハンドラーやサービスを登録する方法を紹介します。
カスタムコントロールのライブラリを開発している場合でも、ソリューションを複数のプロジェクトに分割しているだけの場合でも、MAUI ライブラリの中からビューハンドラーやサービスを登録したくなる場面はほぼ必ず出てきます。
まず前提として、ゼロコンフィグで登録する仕組みは存在しません。MAUI はビルダーパターンを使ってアプリケーションを構築するため、ハンドラーやサービスを登録するにはそのビルダーへアクセスする必要があります。
この問題に対する最良のアプローチは、ライブラリプロジェクトに MauiAppBuilder の拡張メソッドを持つ静的クラスを定義することです。下の例をご覧ください。
public static class Config
{
public static MauiAppBuilder UseMyPlugin(this MauiAppBuilder builder)
{
builder.ConfigureMauiHandlers(handlers =>
{
handlers.AddHandler(typeof(MyView), typeof(MyViewHandler));
});
builder.Services.AddSingleton<IMyService, MyService>();
return builder;
}
}
この実装はビルダーパターンに沿っており、利用側のプロジェクトに簡単に組み込めます。MAUI の Program.cs を開き、app builder の呼び出しチェーンに .UseMyPlugin() を追加するだけです。
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMyPlugin()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
return builder.Build();
}
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.