1
1

.NET MAUIとCleanArchitectureで簡単なアプリを作成してみる4~実装6~

Posted at

.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アプリ

「Windows Machine」を選択して▶を押下する
Windows実行.png

メイン画面を表示したところ
Windowsアプリ-メイン画面.PNG

開始日を押下したところ
Windowsアプリ-メイン画面-開始日.PNG

編集画面を表示したところ
Windowsアプリ-編集画面.PNG

Androidアプリ

Android実機をPCに接続する
「Androidローカルデバイス」を選択して▶を押下する
Android実行.png

メイン画面を表示したところ
Androidアプリ-メイン画面.png

開始日を押下したところ
Androidアプリ-メイン画面-開始日.png

編集画面を表示したところ
Androidアプリ-編集画面.png

参考にしたURL

.NET MAUI チュートリアル

まとめ

今回で完成です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1