기술나눔

참고 사항: Microsoft.Extensions.Options 사용 방법

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

첫째, 목적:

Microsoft.Extensions.Options는 구성 옵션을 처리하기 위한 .NET Core의 라이브러리입니다. 구성 데이터(예: appsettings.json 파일, 환경 변수 또는 기타 구성 소스의 데이터)를 읽고 바인딩하고 이를 애플리케이션에 삽입하는 강력한 형식의 방법을 제공합니다. 이 라이브러리는 .NET Core의 일부이지만 .NET Framework 또는 기타 .NET 구현에서도 사용할 수 있습니다.
핵심 아이디어


• 옵션 패턴: 옵션 패턴은 클래스를 사용하여 구성 데이터의 그룹화를 나타냅니다. 이러한 클래스는 일반적으로 구성 데이터의 키에 해당하는 몇 가지 속성을 포함하는 간단한 POCO(Plain Old CLR Objects)입니다.
• IOptions: IOptions<T> 인터페이스는 T 유형의 구성 데이터에 액세스하는 데 사용됩니다. T 유형의 구성 데이터를 등록한 후 종속성 주입을 통해 애플리케이션의 다른 부분에서 이 데이터에 액세스할 수 있습니다.
• IOptionsSnapshot: IOptionsSnapshot<T> 애플리케이션이 실행되는 동안 구성 데이터를 다시 로드해야 하는 시나리오에 적합합니다. 모든 요청에 ​​대해 구성 데이터의 새로운 스냅샷을 제공합니다.
• IOptionsMonitor: IOptionsMonitor<T> 구성 데이터의 변경 사항을 실시간으로 모니터링하는 데 사용됩니다. 구성 데이터가 변경될 때 트리거될 수 있는 변경 알림 이벤트를 제공합니다.


2. 예:


일부 애플리케이션 설정이 포함된 appsettings.json 구성 파일이 있다고 가정해 보겠습니다.

  1. {
  2. "MySettings": {
  3. "SettingA": "value1",
  4. "SettingB": "value2"
  5. }
  6. }

먼저 다음 설정을 나타내는 클래스를 정의합니다.

  1. public class MySettings
  2. {
  3. public string SettingA { get; set; }
  4. public string SettingB { get; set; }
  5. }

그런 다음 Startup.cs의 ConfigureServices 메서드에 이 구성 클래스를 등록합니다.

 

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. // 绑定配置
  4. services.Configure<MySettings>(Configuration.GetSection("MySettings"));
  5. // 其他服务注册...
  6. }

이제 필요할 때마다 종속성 주입을 통해 이러한 설정에 액세스할 수 있습니다.

  1. public class MyService
  2. {
  3. private readonly MySettings _mySettings;
  4. public MyService(IOptions<MySettings> options)
  5. {
  6. _mySettings = options.Value;
  7. }
  8. public void DoSomething()
  9. {
  10. Console.WriteLine(_mySettings.SettingA);
  11. // 使用 _mySettings...
  12. }
  13. }

Microsoft.Extensions.Options는 애플리케이션의 구성 데이터를 관리하고 액세스하는 간단하면서도 강력한 방법을 제공합니다. 강력한 형식의 구성 클래스와 종속성 주입을 사용하면 코드를 명확하고 유지 관리하기 쉽게 유지하면서 구성 데이터를 애플리케이션에 쉽게 통합할 수 있습니다.

5. 알아야 할 지식 포인트

옵션 

I옵션스냅샷 

I옵션모니터 

Microsoft.Extensions.Options 네임스페이스 Microsoft Learn 

System.Windows.Controls 네임스페이스 Microsoft Learn

6. 소스코드 주소

GitHub - HeBianGu/WPF-ControlDemo: 예제

GitHub - HeBianGu/WPF-ControlBase: Wpf로 캡슐화된 사용자 정의 컨트롤 리소스 라이브러리

GitHub - HeBianGu/WPF-Control: WPF 경량 제어 및 스키닝 라이브러리

7. 자세히 알아보기

System.Windows.Controls 네임스페이스 Microsoft Learn

https://github.com/HeBianGu

HeBianGu의 개인 공간-HeBianGu의 개인 홈페이지-Bilibili 비디오