Ninject,是一个IOC的工具,就是我们经常说的控制反转。
IOC的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。
先说下我对这个工具的感受:老是配置,烦死人了,什么XML,什么配置都没代码写的舒服,痛快。嘿嘿。。。 因为每次在定义Type类型的时候,还得去找下这个Assembly的签名。。。好累。这个工具可以让你的注入配置模块化。其他的好处自己体会拉。
官网打出了这几个口号:
- Bend software to your will : 改变你的软件,更加的松耦合、高内聚
- Laugh in the face of change : 微笑着面对改变
- Use your sharpest tools :
- Write smarter software everywhere :可以在任何地方运行,它是轻量级的。
- Be fast, be agile, be precise :快,灵活,准确
通常情况下我们会这么写我我们的代码:
public class Samurai {
public IWeapon Weapon { get; private set; }
public Samurai(IWeapon weapon)
{
this.Weapon = weapon;
}
}
通过Ninject,构造函数中赋值的问题可以这样解决。
public class WarriorModule : NinjectModule
{
public override void Load()
{
this.Bind<IWeapon>().To<Sword>();
}
}
注:Sword是实现IWeapon的一个类。
舒服不?是否有点心动了吧。好吧,就是作为菜鸟的你,最少应该知道get;set;方法其实可以添加修饰符的。^_^别在写一个私有字段了哦,看见好多了,纠结,虽然我也曾经这么做过。。。。