Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9529

[C#] Injectionのライフサイクル

$
0
0

開発メモ

下記は、Startup.csにて外のクラスをインジェクトする際のコードになります。

publicvoidConfigureServices(IServiceCollectionservices){services.AddRazorPages();services.AddScoped<IMyDependency,MyDependency>();services.AddTransient<IOperationTransient,Operation>();services.AddScoped<IOperationScoped,Operation>();services.AddSingleton<IOperationSingleton,Operation>();services.AddSingleton<IOperationSingletonInstance>(newOperation(Guid.Empty));// OperationService depends on each of the other Operation types.services.AddTransient<OperationService,OperationService>();}

ここで、 AddScoped, AddTransient, AddSingletonの違いをメモ

こちらを参照しました
https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-3.1

AddTransient

有効期間が一時的なサービス (AddTransient) は、サービス コンテナーから要求されるたびに作成されます。 この有効期間は、軽量でステートレスのサービスに最適です。
要求を処理するアプリでは、一時的なサービスが要求の最後に破棄されます。

AddScoped

有効期間がスコープのサービス (AddScoped) は、クライアント要求 (接続) ごとに 1 回作成されます。
要求を処理するアプリでは、スコープ付きサービスは要求の最後で破棄されます。

AddSingleton

有効期間がシングルトンのサービス (AddSingleton) は、最初に要求されたときに作成されます (または、Startup.ConfigureServices が実行されて、サービス登録でインスタンスが指定された場合)。 以降の要求は、すべて同じインスタンスを使用します。 アプリをシングルトンで動作させる必要がある場合は、サービス コンテナーによるサービスの有効期間の管理を許可することをお勧めします。 クラス内のオブジェクトの有効期間を管理するために、シングルトンの設計パターンを実装してユーザー コードを提供しないでください。
要求を処理するアプリでは、ServiceProvider がアプリのシャットダウン時に破棄されたとき、シングルトン サービスが破棄されます。


Viewing all articles
Browse latest Browse all 9529

Trending Articles