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

MyMemoWiki

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

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
20行目: 20行目:
 
</pre>
 
</pre>
 
===実装===
 
===実装===
 +
*Progmras
 
<pre>
 
<pre>
 
using System;
 
using System;
75行目: 76行目:
 
             return configuration;
 
             return configuration;
 
         }
 
         }
 +
    }
 +
}
 +
</pre>
 +
 +
*設定ロード先
 +
<pre>
 +
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; }
 
     }
 
     }
 
}
 
}
 
</pre>
 
</pre>

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

| .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; }
    }
}