.NET 8での設定ファイルの読み込み方法

.NET 8における設定ファイルの扱い方

JSONファイルからの設定読み込み

AppSettings.jsonファイルの例:

{
  "UserProfile": {
    "UserName": "田中太郎",
    "Sex": "男性",
    "Years": 25
  }
}

実装コード:

static void LoadJsonConfiguration()
{
    // ConfigurationBuilderのインスタンス作成
    var configBuilder = new ConfigurationBuilder();
    
    // JSONファイルの追加
    configBuilder.AddJsonFile("AppSettings.json");
    
    // 設定の構築
    IConfiguration config = configBuilder.Build();
    
    // 設定値の取得
    string userName = config["UserProfile:UserName"];
    int userAge = int.Parse(config["UserProfile:Years"]);
    string userSex = config["UserProfile:Sex"];
    
    Console.WriteLine($"名前:{userName}, 年齢:{userAge}, 性別:{userSex}");
    Console.ReadKey();
}

YAMLファイルからの設定読み込み

static void LoadYamlConfiguration()
{
    var configBuilder = new ConfigurationBuilder();
    configBuilder.AddYamlFile("AppSettings.yaml");
    IConfiguration config = configBuilder.Build();
    
    string userName = config["UserProfile:UserName"];
    int userAge = int.Parse(config["UserProfile:Years"]);
    string userSex = config["UserProfile:Sex"];
    
    Console.WriteLine($"名前:{userName}, 年齢:{userAge}, 性別:{userSex}");
    Console.ReadKey();
}

設定のオブジェクトへのバインド

モデルクラスの定義:

public class UserProfile
{
    public string UserName { get; set; }
    public string Sex { get; set; }
    public int Years { get; set; }
}

バインド処理の実装:

static void BindConfigurationToObject()
{
    var configBuilder = new ConfigurationBuilder();
    configBuilder.AddJsonFile("AppSettings.json");
    IConfiguration config = configBuilder.Build();
    
    // 設定セクションのバインド
    var userProfile = new UserProfile();
    config.GetSection("UserProfile").Bind(userProfile);
    
    Console.WriteLine($"名前:{userProfile.UserName}, 年齢:{userProfile.Years}, 性別:{userProfile.Sex}");
    Console.ReadKey();
}

IOptionsを使用した設定管理

static void UseOptionsPattern()
{
    var configBuilder = new ConfigurationBuilder();
    configBuilder.AddJsonFile("AppSettings.json");
    IConfiguration config = configBuilder.Build();
    
    // サービスコレクションの設定
    var services = new ServiceCollection();
    services.Configure<UserProfile>(config.GetSection("UserProfile"));
    
    // サービスプロバイダーの構築
    var serviceProvider = services.BuildServiceProvider();
    var options = serviceProvider.GetRequiredService<IOptions<UserProfile>>();
    var userProfile = options.Value;
    
    Console.WriteLine($"名前:{userProfile.UserName}, 年齢:{userProfile.Years}, 性別:{userProfile.Sex}");
}

タグ: .NET8 configuration JSON YAML IOptions

7月14日 21:13 投稿