.NET 핵심 전투 개발 (제 13과 : 결합 구성 : 구성 데이터 베어러를 사용하여 강력한 형식의 개체) - 연구 노트

13 | 구성 바인딩 : 베어러 구성 데이터는 강력한 형식의 객체

하이라이트 :

1 설정 값이 존재하는 오브젝트를 지지체에 결합 될

2, 사유 재산의 구성 값을 지원하는 바인딩됩니다

A의 코드를 계속 사용

제 클래스의 구성 예로서 정의 받기

class Config
{
    public string Key1 { get; set; }
    public bool Key5 { get; set; }
    public int Key6 { get;  set; }
}

그런 다음 구성 파일, appsettings.json보고

{
  "Key1": "Value1",
  "Key2": "Value2",
  "Key5": true,
  "Key6": 0
}

패키지에 대한 참조를 추가합니다

  • Microsoft.Extensions.Configuration.Binder

패키지의 역할은 우리가 쉽게 강력 상단에 입력 된 바인딩을 구성 할 수 있도록하는 것입니다

주요 프로그램

var builder = new ConfigurationBuilder();
builder.AddJsonFile("appsettings.json", optional:true, reloadOnChange:true);
var configurationRoot = builder.Build();

var config = new Config()
{
    Key1 = "config key1",
    Key5 = false,
    Key6 = 100
};

configurationRoot.Bind(config);

Console.WriteLine($"Key1:{config.Key1}");
Console.WriteLine($"Key5:{config.Key5}");
Console.WriteLine($"Key6:{config.Key6}");

프로그램을 시작, 다음과 같이 출력은 :

Key1:Value1
Key5:True
Key6:0

알 수있는 바와 같이, 필드는 구성에서 결합 독출

사실, 일반적으로, 프로파일은 너무 간단, 일반적으로 중첩 된 형식되지 않을 것

{
  "Key2": "Value2",
  "Key6": 0,
  "OrderService": {
    "Key1": "order key1",
    "Key5": true,
    "Key6": 200
  }
}

이 경우, 우리는 설정 섹션 객체에 바인드해야

configurationRoot.GetSection("OrderService").Bind(config);

이는 다른 구성으로 그룹화 될 수 있고, 각각의 혼합을 회피 바인딩

프로그램을 시작, 다음과 같이 출력은 :

Key1:order key1
Key5:True
Key6:200

이 구성은 상술 한 유형의 임의의 부분으로부터 판독하고, 결합 될 수있다

여기에 정의 된 모든 유형, 모든 필드는 공개하지만, 민간 분야에 대한 다음은 개인이 될 수있는 몇 가지 장면은 기본적으로 정의 될 수있다 할당 기본값을 허용하지 않습니다 또한 바인딩에가는 것이 아니라,있다 설정

class Config
{
    public string Key1 { get; set; }
    public bool Key5 { get; set; }
    public int Key6 { get; private set; } = 100;
}

주요 프로그램

var config = new Config()
{
    Key1 = "config key1",
    Key5 = false
};

configurationRoot.GetSection("OrderService").Bind(config);

프로그램을 시작, 다음과 같이 출력은 :

Key1:order key1
Key5:True
Key6:100

Key6 변화하지 않는 값이 100 인 볼 수 값 (200)에 배치된다

민간 변수가 적용되도록합시다, 사실, 또 다른 인수 바인딩이있다

configurationRoot.GetSection("OrderService").Bind(config,
                binderOptions => { binderOptions.BindNonPublicProperties = true; });

프로그램을 시작, 다음과 같이 출력은 :

Key1:order key1
Key5:True
Key6:200

그 결과, 전용 필드는 구성 내부에서 할당 될 수있다

크리에이티브 커먼즈 라이센스

이 작품은 비영리 - - 동일 조건 변경 허락 4.0 국제 라이센스 계약 크리에이티브 커먼즈 저작자 표시 라이선스합니다.

무단 전재, 사용, 재 게시에 오신 것을 환영합니다,하지만 (링크가 포함 : http://www.cnblogs.com/MingsonZheng/)를 청 Ziming에 의해 서명 된 문서를 유지하기 위해 반드시 상업적인 목적으로 사용할 수 없다, 용지 사용권 변경에 따라 같은 일을 게시해야 .

당신은 질문이있는 경우에는, 저에게 연락 주시기 바랍니다 ([email protected]).

추천

출처www.cnblogs.com/MingsonZheng/p/12387527.html