ホームページ バックエンド開発 C#.Net チュートリアル .NET Core 構成ファイルのロードと構成データの DI インジェクション

.NET Core 構成ファイルのロードと構成データの DI インジェクション

May 26, 2017 pm 01:33 PM
.net core

.NET Core 設定ファイル

以前は、.NET の設定ファイルは App.config/Web.config などの XML 形式でしたが、.NET Core では、JSON 形式の設定ファイルを使用することが推奨されています。より使いやすく、より柔軟で、.NET Core の DI を使用して構成データを挿入できます。

使用:

var config = new ConfigurationBuilder()
                .AddInMemoryCollection()    //将配置文件的数据加载到内存中
                .SetBasePath(Directory.GetCurrentDirectory())   //指定配置文件所在的目录
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)  //指定加载的配置文件
                .Build();    //编译成对象  
            Console.WriteLine(config["test"]);  //获取配置中的数据
            config["test"] = "test test";   //修改配置对象的数据,配置对象的数据是可以被修改的
            Console.WriteLine(config["test11"]);    //获取配置文件中不存在数据也是不会报错的
            Console.WriteLine(config["theKey:nextKey"]);    //获取:theKey -> nextKey 的值
ログイン後にコピー

構成ファイル appsettings.json ファイルの内容:

{
  "test": "testVal",
  "theKey": {
    "nextKey": "keyVal"
  }
}
ログイン後にコピー

注:

ConfigurationBuilder はパッケージ「Microsoft.Extensions.Configuration」を追加する必要があります

AddJsonFile はパッケージ「Microsoft.Extensions. Configuration.Json"

DI で使用

var sp = new ServiceCollection()
                .AddOptions()   //注入IOptions<T>,这样就可以在DI容器中获取IOptions<T>了
                .Configure<TestCls>(config.GetSection("TestCls"))   //注入配置数据
                //也可以对注入的配置数据进行修改
                .Configure<TestCls>(t =>
                {
                    t.Name = "Jame"; //修改Name的值
                })
                .BuildServiceProvider();    //编译

            var test = sp.GetService<IOptions<TestCls>>();    //获取注入的配置数据对象
            Console.WriteLine(JsonConvert.SerializeObject(test.Value));    //{"Name":"Jame","Age":123}

            //下面的代码中检验Configure注入的配置数据对象是单例模式的(.NET Core中DI容器的三种生命周期:Singleton(单例), Scoped(作用域), Transient(瞬态))
            var test1 = sp.GetService<IOptions<TestCls>>();
            Console.WriteLine(test == test1);   //true
            //创建一个新的作用域获取配置数据对象
            var test2 = sp.GetService<IServiceScopeFactory>().CreateScope().ServiceProvider.GetService<IOptions<TestCls>>();
            Console.WriteLine(test == test2);   //true
ログイン後にコピー

構成テスト クラス:

         public class TestCls
         {
             public string Name { get; set; }
             public int Age { get; set; }
         }
ログイン後にコピー

appsettings.json の内容:

{
  "TestCls": {
    "Name": "Tom",
    "Age": 123
  }
}
ログイン後にコピー

注:

ServiceCollection はパッケージを追加する必要があります: "Microsoft.Extensions.DependencyInjection"

AddOptions はパッケージを追加する必要があります: "Microsoft.Extensions.Options.ConfigurationExtensions"

ASP.NET Core で使用されます

Startup.cs -> 構成ファイルは、スタートアップ構築メソッド:

var builder = new ConfigurationBuilder()
                .AddInMemoryCollection()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
            Configuration = builder.Build();
ログイン後にコピー

Startup で初期化されます。 cs ->ConfigureServices メソッド 構成データの挿入:

services.AddOptions()        //注入IOptions<T>
                .Configure<TestCls>(Configuration.GetSection(nameof(TestCls)))
                .Configure<TestCls>(test =>
                {
                    test.Name = "Jame"; //修改Name的值
                });
ログイン後にコピー

構成ファイル内の構成データ:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "TestCls": {
    "Name": "Tom",
    "Age": 123
  }
}
ログイン後にコピー

コントローラーへの挿入:

[Route("api/[controller]")]
    public class ValuesController : Controller
    {
        IOptions<TestCls> _test;
        public ValuesController(IOptions<TestCls> test)
        {
            _test = test;
        }
        [HttpGet]
        public string Gets()
        {
            return JsonConvert.SerializeObject(_test.Value);
        }
ログイン後にコピー

アクセス: /api/values

表示: {"Name":"Jame", "年齢":123 }

【関連する推奨事項】

1. .Net Core のグラフィック検証コード

2.

.NET Core CLI ツールのドキュメント

3. .Net Core

4.

.net MVC でフォーム検証を使用するサンプルコードを共有します

5.

.net core で http リクエストを行う方法は?

6.

CentOS 上で ZKEACMS を実行するチュートリアルの例

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11 で Core Isolation のメモリ整合性機能を有効にする方法 Windows 11 で Core Isolation のメモリ整合性機能を有効にする方法 May 10, 2023 pm 11:49 PM

Microsoft の Windows 11 2022 Update (22H2) では、CoreIsolation のメモリ整合性保護がデフォルトで有効になっています。ただし、Windows 11 2022 Update (22H1) などの古いバージョンのオペレーティング システムを実行している場合は、この機能を手動で有効にする必要があります。 Windows 11 で CoreIsolation のメモリ整合性機能をオンにする Core Isolation について知らないユーザーのために説明すると、これは Windows 上の基本的なコア アクティビティをメモリ内で隔離することで悪意のあるプログラムから保護するように設計されたセキュリティ プロセスです。このプロセスとメモリ整合性機能を組み合わせることで、

コンピューターコアとはどういう意味ですか? コンピューターコアとはどういう意味ですか? Sep 05, 2022 am 11:24 AM

コンピュータでは、コアには 2 つの意味があります: 1. コア (コアとも呼ばれる) は、CPU の最も重要なコンポーネントです。CPU のすべての計算、ストレージ コマンドの受け入れ、データの処理はコアによって実行されます。2. コア、 core は Intel のプロセッサ名で、Core は Intel が Pentium プロセッサに続いて立ち上げたプロセッサ ブランドで、現在は第 12 世代 Core プロセッサがリリースされています。

C# の雇用の見通しはどのようなものですか? C# の雇用の見通しはどのようなものですか? Oct 19, 2023 am 11:02 AM

初心者でも経験豊富なプロフェッショナルでも、C# をマスターすることでキャリアへの道が開かれます。

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する May 06, 2024 pm 04:43 PM

現在、人工知能(AI)技術の開発は本格化しており、さまざまな分野で大きな可能性と影響力を発揮しています。本日、Dayao は、参考にしていただけるよう、4 つの .NET オープン ソース AI モデル LLM 関連プロジェクト フレームワークを共有します。 https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel は、OpenAI、Azure などの大規模言語モデル (LLM) を統合するように設計されたオープン ソース ソフトウェア開発キット (SDK) です。

Windows 11/10でプロセッサーのサーマルトリップエラーを修正する方法[修正] Windows 11/10でプロセッサーのサーマルトリップエラーを修正する方法[修正] Apr 17, 2023 am 08:13 AM

ラップトップやデスクトップなどのデバイスのほとんどは、若いゲーマーやプログラマーによって長年にわたって頻繁に使用されてきました。アプリケーションの過負荷により、システムがハングすることがあります。これにより、ユーザーはシステムを強制的にシャットダウンする必要があります。これは主に、重いゲームをインストールしてプレイするプレイヤーに発生します。強制シャットダウン後にシステムが起動しようとすると、以下に示すような黒い画面でエラーがスローされます。 以下は、この起動中に検出された警告です。これらは、イベント ログ ページの設定で表示できます。警告: プロセッサーの温度トリップ。何かキーを押すと続行します。 ..これらのタイプの警告メッセージは、デスクトップまたはラップトップのプロセッサ温度がしきい値温度を超えると常にスローされます。 Windows システムでこの問題が発生する理由を以下に示します。重いアプリケーションがたくさんあります

開発者向けの .NET パフォーマンス最適化テクノロジ 開発者向けの .NET パフォーマンス最適化テクノロジ Sep 12, 2023 am 10:43 AM

.NET 開発者は、高品質のソフトウェアを提供するために機能とパフォーマンスを最適化することの重要性を認識する必要があります。提供されたリソースを巧みに活用し、Web サイトの読み込み時間を短縮することで、ユーザーに快適なエクスペリエンスを提供するだけでなく、インフラストラクチャのコストも削減できます。

.NET Core クロスプラットフォーム アプリケーション開発の実践: Windows から Linux および macOS へのシームレスな移行 .NET Core クロスプラットフォーム アプリケーション開発の実践: Windows から Linux および macOS へのシームレスな移行 Feb 26, 2024 pm 12:55 PM

.NETCore のリリースにより、.NET 開発者は、複数のオペレーティング システム上で .NET アプリケーションを簡単に作成して実行できる新たな機会が得られます。この記事では、.NETCore を使用してクロスプラットフォーム アプリケーション開発を実現する方法について詳しく説明し、Windows、Linux、macOS などのオペレーティング システムでのベスト プラクティスの経験を共有します。 1. 開発環境を準備する クロスプラットフォームのアプリケーション開発を開始するには、まずターゲット プラットフォームごとに開発環境を準備する必要があります。 Windows Windows では、Visual Studio を通じて .NETCoreSDK をインストールできます。インストールが完了したら、Visual Studio を通じて .NETCore プロジェクトを作成して実行できます。李

Java フレームワークと .NET フレームワークのパフォーマンスの違い Java フレームワークと .NET フレームワークのパフォーマンスの違い Jun 03, 2024 am 09:19 AM

同時実行性の高いリクエスト処理の点では、.NETASP.NETCoreWebAPI は JavaSpringMVC よりも優れたパフォーマンスを発揮します。その理由としては、AOT の早期コンパイルにより起動時間が短縮され、開発者がオブジェクト メモリの割り当てと解放を行うため、より洗練されたメモリ管理が行われます。

See all articles