码迷,mamicode.com
首页 > 其他好文 > 详细

ninject学习笔记一:IOC的实现

时间:2014-08-16 01:03:09      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   io   文件   

这篇文章主要介绍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();
}

运行结果如下:

bubuko.com,布布扣

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

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

 

ninject学习笔记一:IOC的实现,布布扣,bubuko.com

ninject学习笔记一:IOC的实现

标签:style   blog   http   color   使用   os   io   文件   

原文地址:http://www.cnblogs.com/shenlan/p/ninject.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!