技術共有

注: 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 Object) です。
• Iオプション: Iオプション<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 Video