首页 > 代码库 > 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接口的对象即可。
(时间有点晚了,还没有写到依赖注入的实现,明天再续。。。)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。