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]).