依赖注入的一些实例(Dependence Injection)

最近学习MVC3过程中,接触到依赖注入的概念,随手写了一些简单的实例,帮助我更好的去理解这些概念。

1.构造器注入:

1>在命名空间DI中,先定义一个接口IHello:

View Code

2>然后定义两个实现该接口的方法ChineseHello和EnglishHello:

View Code
1 public class ChineseHello : IHello
2     {
3         public string SayHello()
4         {
5             return "你好,JChan";
6         }
7     }
View Code
1 public class EnglishHello : IHello
2     {
3         public string SayHello()
4         {
5             return "Hello,JChan";
6         }
7     }

 

3>接着定义一个People类,这个类定义一个Say()的方法,这个类的构造方法的参数没有具体指明是传入ChineseHello还是EnglishHello,这就具有相当的灵活性,当具体申明这个类时,才决定具体传入哪个类:
View Code

4>最后,在Main()方法中调用,代码如下:

View Code

运行显示结果如下:

 2.利用Ninject插件注入:

1>在Ninject官网下载最新的插件,并在工程项目中引用

2>新建两个类MyModuleEnglish,MyModuleChinese,分别将IHello接口绑定到EnglishHello和ChineseHello上,代码如下:

View Code
1 public class MyModuleEnglish : NinjectModule
2         {
3             public override void Load()
4             {
5                 Bind<IHello>().To<EnglishHello>();
6             }
7         }
View Code
1 public class MyModuleEChinese : NinjectModule
2         {
3             public override void Load()
4             {
5                 Bind<IHello>().To<ChineseHello>();
6             }
7         }

3>最后修改Main()函数,代码如下:

View Code
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             People p1 = new People(new EnglishHello());
 6             People p2 = new People(new ChineseHello());
 7             Console.WriteLine("使用构造函数进入依赖注入:");
 8             Console.WriteLine("使用英语打招呼:");
 9             p1.say();
10             Console.WriteLine("使用中文打招呼:");
11             p2.say();
12 
13 Console.WriteLine("######################################");
14             Console.WriteLine("使用Nibject进入依赖注入:");
15             IKernel kernel3 = new StandardKernel(new MyModuleEnglish());
16             People p3 = kernel3.Get<People>();
17             IKernel kernel4 = new StandardKernel(new MyModuleChinese());
18             People p4 = kernel4.Get<People>();
19             Console.WriteLine("使用英语打招呼:");
20             p3.say();
21             Console.WriteLine("使用中文打招呼:");
22             p4.say();
23             Console.ReadKey();
24         }
25 
26     }

 4>最后运行程序

 

 

 

posted on 2012-06-04 17:15 Jason_Chan 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/Jason-Chan/archive/2012/06/04/2534914.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值