首页 > 代码库 > ninject学习笔记一:IOC的实现

ninject学习笔记一:IOC的实现

这篇文章主要介绍ninject在IOC方面的实现,至于IOC的含义,网络资源很丰富,我这儿就不再赘述了。官方的文档其实挺好的,只是本人英语很烂,看起来比较费劲,下面这些东西是看官方的代码推敲的,我觉得应该能够说明一些问题,希望给和我一样的初学者有一些帮助吧。

这里用一个小案例开始,也就是官方案例的改版。

首先,你要创建项目,并且通过NuGet添加ninject程序集文件

install-package ninject

接着,创建一个武器接口IWeapon,常说攻击性武器,可见咱们这武器也有杀伤力,定义伤害的方法Hit()

public interface IWeapon{   string Hit(String target);   }

定义长剑Sword和绣花针Needle,在武侠世界里,高手飞花摘叶也可伤人,所以让它们实现武器接口IWeapon

public class Sword : IWeapon{     public string Hit(string target){           return "长剑伤害"+target;     }}public class Needle : IWeapon{     public string Hit(string target){           return "绣花针伤害"+target;     }}

然后得有人使用武器打架才行(为什么非得打架呢),那么就来一个江湖中人吧,侠客类Warrior

    public class Warrior    {        public string Name { get; set; }        private IWeapon iweapon;        public Warrior(IWeapon iweapon){            this.iweapon = iweapon;        }        public void Attack(string target) {            Console.WriteLine(this.Name+iweapon.Hit(target));        }    }

给侠客定义了名字和行为,最后在主方法的测试,通过Warrior构造函数注入武器对象给jian或zhen

static void Main(string[] args){                   IWeapon jian = new Sword();       IWeapon zhen = new Needle();       Warrior w1 = new Warrior(jian);       w1.Name = "令狐冲";       Warrior w2 = new Warrior(zhen);       w2.Name = "东方不败";       w1.Attack(w2.Name);       w2.Attack(w1.Name);       Console.ReadLine();}

运行结果如下:

以上算是通过手动注入,每次更换武器只需要重新实例化一个实现了IWeapon接口的对象即可。

(时间有点晚了,还没有写到依赖注入的实现,明天再续。。。)