【发布时间】:2013-09-12 20:01:37
【问题描述】:
我已经看到这个问题Still need help understanding why Ninject might be better than manual DI,但我仍然对 Ninject 的用处感到困惑......
我明白这段代码...
class Samurai
{
readonly IWeapon weapon;
[Inject]
public Samurai(IWeapon weapon)
{
this.weapon = weapon;
}
public void Attack(string target)
{
this.weapon.Hit(target);
}
}
... 将产生以下“(基本上)看起来像这样的动态方法:”
delegate(IWeapon weapon)
{
return new Samurai(weapon);
}
这到底有什么用?如果没有 Ninject,我仍然可以这样做(根据 Ninject 文档“手动依赖注入”-No Ninject):
class Program
{
public static void Main()
{
var warrior1 = new Samurai(new Shuriken());
var warrior2 = new Samurai(new Sword());
warrior1.Attack("the evildoers");
warrior2.Attack("the evildoers");
}
}
使用 Ninject 为我提供了哪些仅遵循松散耦合的基本原则我无法做到的事情?感谢您帮助我理解。
【问题讨论】:
标签: c# dependency-injection inversion-of-control ninject