0

私はすべてのWeb要求を処理するASP.Netコアプロジェクトを持っていますが、データベースの読み込み/書き込みを担当する別のプロジェクトがありますプロジェクト)。 もちろん、別のプロジェクトには別のものがありますが、ここではシンプルさのために前の2つのプロジェクトしかないと想像してみましょう。他のプロジェクトにクラスを挿入するためにAsp.Netコア依存関係注入を使用する

ASP.Netコア依存関係注入を使用して、別のプロジェクト(ASP.Netコアプロジェクトではなくライブラリクラスである他のプロジェクト)にクラスを注入する方法はありますか?たとえば、EntityフレームワークプロジェクトにDbContextを挿入するなどです。

+0

短い答えは「はい」です。プロジェクトを抽象化に依存させ、コンポジションルートに依存プロジェクトに具体的な実装をインジェクトさせます。 – Nkosi

+0

@Nkosi私に簡単なコードを教えてください。私はあなたが意味することを正確には理解していませんでした。 –

+0

現在の問題を再現するために使用できる[mcve]を提供してください。これにより、より良い回答を提供するのに役立ちます。 – Nkosi

答えて

2

あなたがしていることは無益だと思われるかもしれませんか?あなたはAsp.Netアプリケーション内で実行されている場合は、すべてのコードは、おそらくコントローラから呼び出され、コントローラは、あなたが必要とするすべての依存関係を取得し、それらを通過することができます

public class MyController : Controller 
{ 
    readonly MyComponent myComponent; 

    public MyController(MyDbContext dbctx) 
    { 
     myComponent= new MyComponent(dbctx); 
    } 
    // ...etc... 
} 

しかし、あなたの一つであります他のプロジェクトConsoleAppまたはServiceのAsp.Netアプリケーションを実行していますか? Asp.Netの外でDIを使用するAsp.Net.Coreを参照できますか?

答えは「おそらくはい」と思われ、出発点はMS's builder code on githubです。

しかし、それはそこにある既存のDIコンテナすべてに対してAsp.Net DIを選択するのはなぜですか? Castle.Windsor、AutoFac、StructureMap、Ninjectは何年もうまく仕事をしてくれました。

関連する問題