public interface IOperations
{
int mul(int a, int b);
}
我的界面的实现:
public class Operations:IOperations
{
public int mul(int a,int b){
return a * b;
}
}
在我的控制器中,我创建了我的构造函数:
private IOperations _ioperations;
public HomeController(IOperations _ioperations)
{
this._ioperations = _ioperations;
}
处理程序类:
public readonly IOperations _ioperation;
public Handeler(IOperations _ioperation)
{
this._ioperation = _ioperation;
}
绑定类:
public class Binding:NinjectModule
{
public override void Load()
{
Bind<IOperations>().To<Operations>();
}
}
}
最后我的控制器:
var kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
var _operation = kernel.Get<IOperations>();
var handler = new Handeler(_operation);
var result=handler._ioperation.mul(5, 2);
我已经从一个如何使用Ninject的网站上复制了这些,对我而言,看起来很奇怪,如果你看到我正在使用&#34; new&#34;关键词并实例化,据我所知,我们不应该这样做,否则说明DI的意义?有人可以解释一下吗?
答案 0 :(得分:0)
而不是在控制器中进行初始化,您应该使用Global.asax文件中的Application_Start()方法来注册绑定,因为我们不必为每个控制器执行相同的操作。有关完整的实施,请参阅此link。