问题
我有一些问题要理解在我的代码中何时何地我应该使用像 Ninject 这样的依赖注入器。
代码
例如,假设我们有以下代码:
//WITHOUT NINJECT:
IMailSender mailSender = new MockMailSender();
//WITH NINJECT:
IMailSender mailSender = kernel.Get<IMailSender>();
这不是依赖注入,所以在这种情况下使用 Ninject 有意义吗?
另一个例子展示了我的代码是如何被依赖注入器弄得一团糟的:
public void CalculateRevenueRecognitions(IContract contract)
{
//WITH NINJECT
var kernel = new StandardKernel(new DefaultModule());
var arguments = new List<IParameter>
{
new ConstructorArgument("amount",contract.Revenue),
new ConstructorArgument("date", contract.WhenSigned)
};
contract.AddRevenueRecognition(kernel.Get<IRevenueRecognition>(arguments.ToArray()));
//WITHOUT NINJECT:
contract.AddRevenueRecognition(new RevenueRecognition(contract.Revenue, contract.WhenSigned))));
}
问题
我什么时候应该使用依赖注入器?
- 关于构造函数注入、参数注入等
- 关于对象创建(依赖注入器是否用新对象替换经典对象创建?)
- 其他人呢?
什么时候不应该使用依赖注入器?