Jason_Chan

凡事不平凡

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

最近学习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  阅读(163)  评论(0编辑  收藏  举报