| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「.NET Core Console」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
96行目: 96行目:
 
         public string ConnectionString { get; set; }
 
         public string ConnectionString { get; set; }
 
         public string DatabaseName { get; set; }
 
         public string DatabaseName { get; set; }
 +
    }
 +
}
 +
</pre>
 +
 +
*サービス
 +
<pre>
 +
namespace docweb.Services
 +
{
 +
    public class DocumentWebService
 +
    {
 +
        // コンストラクタインジェクション
 +
        public DocumentWebService(IDocumentWebDatabaseSettings settings)
 +
        {
 +
        }
 +
    }
 +
}
 +
</pre>
 +
*JOB
 +
<pre>
 +
namespace docweb_bat.Jobs
 +
{
 +
    public class GetCollection
 +
    { 
 +
        DocumentWebService _service;
 +
        public GetCollection(DocumentWebService service)
 +
        {
 +
            this._service = service;
 +
        }
 +
        public void Run()
 +
        {
 +
        }
 
     }
 
     }
 
}
 
}
 
</pre>
 
</pre>

2021年7月3日 (土) 06:22時点における版

| .NET Core | ASP.NET Core | C Sharp |

.NET Core Console

設定とDIを組み込んだテンプレート

プロジェクト作成

$ dotnet new console -o docweb_bat
$ dotnet new gitignore

NuGet

Configuration

dotnet add package Microsoft.Extensions.Configuration.Json --version 5.0.0

DI

dotnet add package Microsoft.Extensions.DependencyInjection --version 5.0.1
dotnet add package Microsoft.Extensions.Options --version 5.0.0
dotnet add package Microsoft.Extensions.Configuration.Binder --version 5.0.0

実装

  • Progmras
using System;
using System.IO;
using docweb.Services;
using docWeb.Models;
using docweb_bat.Jobs;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;

namespace docweb_bat
{
    public class Program
    {
        static void Main(string[] args)
        {
            IServiceCollection services = new ServiceCollection();
            
            var configuration = GetConfiguration();
            
            // 設定を設定管理オブジェクトに読み込む
            // require Microsoft.Extensions.Configuration.Binder
            IDocumentWebDatabaseSettings dbSettings 
                = configuration.GetSection(nameof(DocumentWebDatabaseSettings))
                    .Get<DocumentWebDatabaseSettings>();

            // DIによりオブジェクト関連を構築
            services.AddSingleton<IDocumentWebDatabaseSettings>(sp => dbSettings);
            services.AddSingleton<DocumentWebService>();
            // JOBS
            services.AddSingleton<GetCollection>();

            // 作業を行うオブジェクトをサービスから取り出し実行
            var job = services.BuildServiceProvider().GetService<GetCollection>();
            job.Run();
        }

        // 設定のロード
        private static IConfiguration GetConfiguration() {

            // 環境変数(dotnet run)もしくは、launch.json(デバッガ起動時) にて上書きする設定を指定する
            // export DECWEB_ENV=Development
            // or launch.json configurations.env section 
            var environmentName = Environment.GetEnvironmentVariable("DOCWEB_ENV");  // 環境変数
            Console.WriteLine($"Environment:{environmentName}");

            IConfiguration configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", true, true)
                // 設定ファイルの一部に含める ex appsettings.Development.json
                .AddJsonFile($"appsettings.{environmentName}.json", true, true)
                .Build();

            return configuration;
        }
    }
}
  • 設定ロード先
namespace docWeb.Models
{
    public interface IDocumentWebDatabaseSettings
    {
        string DocumentWebCollectionName { get; set; }
        string ConnectionString { get; set; }
        string DatabaseName { get; set; }
    }

    public class DocumentWebDatabaseSettings : IDocumentWebDatabaseSettings
    {
        public string DocumentWebCollectionName { get; set; }
        public string ConnectionString { get; set; }
        public string DatabaseName { get; set; }
    }
}

*サービス

namespace docweb.Services
{
    public class DocumentWebService 
    {
        // コンストラクタインジェクション
        public DocumentWebService(IDocumentWebDatabaseSettings settings)
        {
        }
    }
}
  • JOB
namespace docweb_bat.Jobs
{
    public class GetCollection
    {   
        DocumentWebService _service;
        public GetCollection(DocumentWebService service) 
        {
            this._service = service;
        }
        public void Run()
        {
        }
    }
}