半ダースのアセンブリを参照するMVCアプリケーションがあります。各アセンブリには、Webサイトに依存するコンポーネントがあります。また、場合によっては、これらのアセンブリは相互に依存関係にあります。これがいくつかのプロトタイプです
Assembly1
---------
interface ILogger{...}
Assembly2
--------
class MyLogger : ILogger {...}
Assembly3
--------
interface IRepository {.....}
Assembly4
---------
interface MyResository : IRepository
{
[Inject]
public ILogger Logger{get;set;}
... other methods...
}
MVCApp
------
public HomeController : Controller
{
[Inject]
public ILogger Logger{get;set;}
[Inject]
public IRepository Repository{get;set;}
}
Di解決用のすべてのNinject関連コードを別のアセンブリに配置し、そのアセンブリは他のすべてのプロジェクトを参照しています。
これが何が起こるかです。HomeControllerがインスタンス化されると、LoggerプロパティとRepositoryプロパティの有効なインスタンスがあります。ロガーには依存関係がなく、完璧です。しかし、リポジトリのインスタンスの内部を見ると、Loggerインスタンスがインスタンス化されていません。
このような状況でNinjectを使用してDIをどのように設定しますか?
ありがとう