「.NET Core Console」の版間の差分
ナビゲーションに移動
検索に移動
(→実装) |
|||
| 41行目: | 41行目: | ||
IServiceCollection services = new ServiceCollection(); | IServiceCollection services = new ServiceCollection(); | ||
| − | var configuration = GetConfiguration(); | + | var configuration = GetConfiguration(args); |
// 設定を設定管理オブジェクトに読み込む | // 設定を設定管理オブジェクトに読み込む | ||
| 50行目: | 50行目: | ||
// DIによりオブジェクト関連を構築 | // DIによりオブジェクト関連を構築 | ||
| + | services.AddSingleton<IConfiguration>(configuration); | ||
services.AddSingleton<IDocumentWebDatabaseSettings>(sp => dbSettings); | services.AddSingleton<IDocumentWebDatabaseSettings>(sp => dbSettings); | ||
services.AddSingleton<DocumentWebService>(); | services.AddSingleton<DocumentWebService>(); | ||
| 61行目: | 62行目: | ||
// 設定のロード | // 設定のロード | ||
| − | private static IConfiguration GetConfiguration() { | + | private static IConfiguration GetConfiguration(string[] args) { |
// 環境変数(dotnet run)もしくは、launch.json(デバッガ起動時) にて上書きする設定を指定する | // 環境変数(dotnet run)もしくは、launch.json(デバッガ起動時) にて上書きする設定を指定する | ||
| 74行目: | 75行目: | ||
// 設定ファイルの一部に含める ex appsettings.Development.json | // 設定ファイルの一部に含める ex appsettings.Development.json | ||
.AddJsonFile($"appsettings.{environmentName}.json", true, true) | .AddJsonFile($"appsettings.{environmentName}.json", true, true) | ||
| + | // コマンドライン引数も格納DI | ||
| + | .AddCommandLine(args) | ||
.Build(); | .Build(); | ||
| 109行目: | 112行目: | ||
{ | { | ||
// コンストラクタインジェクション | // コンストラクタインジェクション | ||
| − | public DocumentWebService(IDocumentWebDatabaseSettings settings) | + | public DocumentWebService(IConfiguration configuration, IDocumentWebDatabaseSettings settings) |
{ | { | ||
} | } | ||
2021年7月3日 (土) 16:39時点における版
| .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 dotnet add package Microsoft.Extensions.Configuration.CommandLine --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(args);
// 設定を設定管理オブジェクトに読み込む
// require Microsoft.Extensions.Configuration.Binder
IDocumentWebDatabaseSettings dbSettings
= configuration.GetSection(nameof(DocumentWebDatabaseSettings))
.Get<DocumentWebDatabaseSettings>();
// DIによりオブジェクト関連を構築
services.AddSingleton<IConfiguration>(configuration);
services.AddSingleton<IDocumentWebDatabaseSettings>(sp => dbSettings);
services.AddSingleton<DocumentWebService>();
// JOBS
services.AddSingleton<GetCollection>();
// 作業を行うオブジェクトをサービスから取り出し実行
var job = services.BuildServiceProvider().GetService<GetCollection>();
job.Run();
}
// 設定のロード
private static IConfiguration GetConfiguration(string[] args) {
// 環境変数(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)
// コマンドライン引数も格納DI
.AddCommandLine(args)
.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(IConfiguration configuration, IDocumentWebDatabaseSettings settings)
{
}
}
}
- JOB
namespace docweb_bat.Jobs
{
public class GetCollection
{
DocumentWebService _service;
public GetCollection(DocumentWebService service)
{
this._service = service;
}
public void Run()
{
}
}
}
© 2006 矢木浩人