8 .net core 配置

本文介绍如何使用C#中的ConfigurationBuilder从JSON文件读取配置,并将配置绑定到类实例。示例展示了读取JSON配置节点和数组的方法,以及如何通过内存匹配方式将配置绑定到自定义类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSON 配置

using System;
using System.IO;

public class Program {
public static IConfiguration Configuration { get; set; }

    public static void Main (string[] args = null) {
        var builder = new ConfigurationBuilder ()
            .SetBasePath (Directory.GetCurrentDirectory ())
            .AddJsonFile ("appsettings.json");

        Configuration = builder.Build ();

        Console.WriteLine ($"option1 = {Configuration["Option1"]}");
        Console.WriteLine ($"suboption1 = {Configuration["subsection:suboption1"]}");
        Console.Write ($"{Configuration["wizards:0:Name"]}, ");

        Console.ReadKey ();
    }
}

示例使用Json文件

{
    "option1": "value1_from_json",
    "option2": 2,
    "subsection": {
        "suboption1": "subvalue1_from_json"
    },
    "wizards": [
        {
            "Name": "Gandalf",
            "Age": "1000"
        },
        {
            "Name": "Harry",
            "Age": "17"
        }
    ]
}

读取节点:

Console.WriteLine($"suboption1 = {Configuration["subsection:suboption1"]}");

读取数组:

Console.Write($"{Configuration["wizards:0:Name"]}");

读取内存匹配并绑定到类

using System;
using System.Collections.Generic;
using Microsoft.Extensions.Configuration;

public class Program {
public static IConfiguration Configuration { get; set; }

    public static void Main (string[] args = null) {
        // 内存匹配
        var dict = new Dictionary<string, string> { 
            { "Profile:MachineName", "Rick" },
            { "App:MainWindow:Height", "11" },
            { "App:MainWindow:Width", "11" },
            { "App:MainWindow:Top", "11" },
            { "App:MainWindow:Left", "11" }
        };

        // 匹配生成器
        var builder = new ConfigurationBuilder ();
        // 添加内存配置
        builder.AddInMemoryCollection (dict);

        Configuration = builder.Build ();

        var window = new MyWindow ();
        // 将匹配绑定到类
        Configuration.GetSection ("App:MainWindow").Bind (window);

        Console.WriteLine ("Press any key...");
        Console.ReadKey ();
    }
}

public class MyWindow {
    public int Height { get; set; }
    public int Width { get; set; }
    public int Top { get; set; }
    public int Left { get; set; }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值