我有一个MVC应用程序,引用了六个程序集。每个程序集都有网站的相关组件所依赖的组件。在某些情况下,这些程序集之间还存在相互依赖的情况。
以下是一些原型:
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没有依赖项,非常完美。 但是,当我查看Repository实例时,Logger实例尚未实例化。
您如何在这种情况下使用Ninject设置DI?
谢谢
Kernel
中注册IRepository
和ILogger
? - nemesv