私はリンクを通過しました:
https://docs.Microsoft.com/en-us/aspnet/core/mvc/controllers/dependency-injection
web APIに依存性注入を使用する方法を学びました。
上記のリンクで述べたように、APIレイヤー内の依存性注入にスタートアップ(Startup.cs)クラスを使用できます。しかし、どのように.NET Core Class Libraryの依存性注入を達成できますか。以下は、クラスライブラリを追加するスクリーンショットです。
そして、私のプロジェクト構造は
プロジェクト「DataManagement.Repository」でクラス「UserRepository」を作成し、プロジェクト「DataManagement.Repository.Interfaces」でインターフェイス「IUserRepository」を作成しました。
プロジェクト「DataManagement.Business」で、クラス「UserManager」を作成しました
class UserManager
{
private IUserManager _userManager;
public UserManager(IUserManager userManager)
{
_userManager = userManager;
}
}
ご覧のとおり、私はコンストラクターを介して依存関係の注入を試みています。
しかし、.NET Core Class Library(.NET Standard)内で依存関係の注入を有効にするために、どのような変更を行う必要があるかはわかりません。
クラスライブラリで何もする必要はありません。メインアプリケーションにのみ composition root があります(オブジェクトグラフを設定できるアプリケーションライフサイクルの最も早い時点)。
これはStartup.cs
ASP.NET Coreアプリケーション。依存関係も登録します:
services.AddScoped<IUserManager,UserManager>();
それでおしまい。クラスライブラリにはコンポジションルートがありません。アプリケーションなしでは使用できず、使用されるIoCコンテナはライブラリではなくアプリケーションの選択であるため、どちらも必要ありません。
ただし、ASP.NET Coreで一般的なAddXxx
メソッドや、AutofacやCastle WindsorなどのサードパーティIoC containernのような何らかの種類のモジュールシステムなど、便利なメソッドを提供してこの登録を行うことができます。