关于IOC 或者是DI 什么的真的很坑爹。 开始理解了这东西了然后闲的没事就又百度了一下,得 我又凌乱了。 看了两个大神的贴 尼玛啊 完全是反过来了。
纠结了半天。然后就想找个简单点不坑爹的原理代码看看 , 然后居然找不到!
想来想去 得 还是自己写个出来看看不就得了。 今天把代码贴出来让大家也看看,有啥不对 多多指教!
// 被控制的对象
public class A { public void Sa() { Console.WriteLine("我是被控制的类"); } } // 你可以看做是个IOC 容器吧 这是个简单例子 没用是什么 IOC工厂 容器啥的 public class C { private A helloGen; // 注意一下这个地方 理解一下 估计就懂这ICO 了 public A S { get { if (this.helloGen==null) { return new A(); } return this.helloGen; } set { this.helloGen = value; } } public void SayHelloTo(string name) { this.helloGen.Sa(); } }
// 通过 类 操作 统一父类 实现控制其他对象类 功能 public class D : C { private readonly C cs = new C(); public void Str() { cs.S.Sa(); } }
提前声明哈,这是个简单的实例, 目的是让我们了解一下 当前类是怎么通过 统一的父类 来操作其他类 对象的 。
非得定义接口(interface) ? 其实不是的 IOC 的接口其实是指的 提供使用的一个对象而已 ,并非 非得是接口。 只是接口看起来更加规范什么什么的。
这个小例子 你自己可以后续修改, 添加上 工厂模式,和仓储模式 那样就 才是个完整的 IOC 。 得写挺多代码的,努力不做码农。你懂的。
DI 认真百度过, 上面的代码从上往下看 那就是IOC ,使用的时候是从下往上看。那就的DI 。 话说 DI 就别纠结了。
原文:http://www.cnblogs.com/atliwen/p/3577847.html