この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 57373|答える: 4

[出典] ASP.NET Core (VI) DIはオブジェクト注入の方法を手動で取得します

[リンクをコピー]
2021年3月19日 15:13:15に投稿 | | |
コア依存注入、制御反転(DI IOC)に関するチュートリアル ASP.NET:

ASP.NET Core依存注入は付属するIOCコンテナを使用します
https://www.itsvse.com/thread-7562-1-1.html


復習:

ASP.NET コア(5)はCAP分散トランザクションに基づいています
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) フィルター 統一モデルステートモデル検証
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET コア(iii) ActivatorUtilitiesを用いて動的にインスタンスを作成する
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET コア(2) コードによるアプリケーションの再起動
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core(1)はRedisキャッシュを使用しています
https://www.itsvse.com/thread-9393-1-1.html
依存注入の要点:

依存注入(DI)は、オブジェクトとそのコラボレーターや依存関係との間に緩やかな結合を実装する技術です。 クラスが操作を行うために使うオブジェクトを提供し、直接コラボレーターをインスタンス化したり静的参照を使ったりするのではなく、

Core DI ASP.NET 一般的にコンストラクタ注入を使ってオブジェクトを取得します。例えばConfigureServicesの注入を設定した後、以下の方法で得られます。


手動でインジェクションオブジェクトを入手したらどうなりますか?

最初の入手方法(時には手に入れられないこともある、おすすめしません):


2つ目の入手方法推奨利用法):

注意:ServiceLocator.Instance.GetService<T>(; ,AddTransientとAddSingletonによって注入されたオブジェクトのみがフェッチ可能ですAddScopedの注入されたオブジェクト(リクエストライフサイクルで唯一)を取得できないのは、取得できないからではなく、取得したオブジェクトがコンストラクタによって取得されていない、すなわち取得されたオブジェクトが共有されていないためであり、使用シナリオがIUnitOfWorkのようなものだからです。

では、リクエストライフサイクル中にインジェクションオブジェクトを手動で取得するにはどうすればよいのでしょうか? その方法は以下の通りです:


又は

IHttpContextAccessorインターフェースはMicrosoft.AspNetCore.Http.AbstractionsNugetパッケージの下にあります。




先の:HttpClient POST はバイトバイト(gzip)圧縮リクエストを直接送信します
次に:Roslyn MSBuildコンパイラの違い
2021年9月22日 20:43:14に投稿 |
学ぶことを...
2021年9月22日 20:55:17に投稿 |
学ぶことを...
2022年6月17日 16:05:39に投稿 |
使い方を学ぶ
 地主| 2024年12月30日 17:09:09に投稿 |
コンソールはIHttpContextAccessorインターフェースを注入します:



.NET/C#コンソールサービスはConsulサービスディスカバリーに登録されています
https://www.itsvse.com/thread-10899-1-1.html
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com