.NET MAUIとCleanArchitectureで簡単なアプリを作成してみる4~実装5~の続き
サービスを登録する
ServiceCollectionを保持するクラスを作成する
MauiApp1プロジェクト直下にServiceProvider.csを追加する
ServiceProvider.cs
internal static class ServiceProvider
{
#pragma warning disable CS8618
private static IServiceProvider _provider;
#pragma warning restore CS8618
/// <summary>
/// サービスコレクション
/// </summary>
public static IServiceCollection Services { get; } = new ServiceCollection();
/// <summary>
/// サービスプロバイダーをビルドする
/// </summary>
public static void Build()
{
_provider = Services.BuildServiceProvider();
}
/// <summary>
/// サービスを取得する
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static T GetService<T>()
{
return _provider.GetService<T>();
}
}
サービスを登録する
MauiProgram.cs
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
+ // サービスを登録する
+ SetupServices();
+ ServiceProvider.Build();
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
+ .UseSkiaSharp(true)
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
#if DEBUG
builder.Logging.AddDebug();
#endif
return builder.Build();
}
+ /// <summary>
+ /// サービス登録
+ /// </summary>
+ private static void SetupServices()
+ {
+ // Repository
+ ServiceProvider.Services.AddTransient<IHealthRepository, HealthRepository>();
+
+ // ユースケース
+ ServiceProvider.Services.AddSingleton<IHealthCreateUseCase, HealthCreateInteractor>();
+ ServiceProvider.Services.AddSingleton<IHealthGetListUseCase, HealthGetListInteractor>();
+
+ // データベース作成
+ Sqlite.CreateDB(Path.Combine(FileSystem.AppDataDirectory, "mauiapp1.db"));
+ }
}
以下は、LiveCharts2 SkiaSharpの登録です。
MauiProgram.cs
+ .UseSkiaSharp(true)
動作させる
以上で、全て繋がったので早速動かしてみます。
Windowsアプリ
Androidアプリ
Android実機をPCに接続する
「Androidローカルデバイス」を選択して▶を押下する
参考にしたURL
まとめ
今回で完成です。