日期:2014-05-20  浏览次数:20953 次

写个简单的IOC的例子,还是hello World
using System;
//声明消费者的开放给提供者使用的功能(定义接口IHelloView类型)
namespace IView {
    public interface IHelloView {
        string txtHello { get; set; }
        event EventHandler RenderText;
        }
    }
using IView;
using System;
namespace View {
    //构造消费者(定义HelloView类型)
    public class HelloView : IHelloView {
        public HelloView() {}

        public string txtHello{get;set;}
        public event EventHandler RenderText;

        public void SayHello() {
            this.LoadAss();
            this.RenderText(null, EventArgs.Empty);
            }

        private void LoadAss() {
            //反射调用:带参数的构造函数
            object[] _args = new object[] { this };
            string _assName = "路径\\Model.dll";
            string _className = "Model.HelloModel";
            System.Activator.CreateInstanceFrom(_assName, _className, false, 0, null, _args, null, null);
            }

        }
    }
using IView;
using System;
namespace Model {
    //定义提供者,实现需求
    public class HelloModel {
        protected IHelloView HellowView { get; set; }
        public HelloModel(IHelloView pView) {
            this.HellowView = pView;
            this.HellowView.RenderText += Render_RenderText;
            }

        void Render_RenderText(object sender, EventArgs e) {
            this.HellowView.txtHello = "Hello World";
            }
        }
    }

最后来个测试:
using System;

namespace TestIOC {
    class Program {
        static void Main(string[] args) {
            View.HelloView _testView = new View.HelloView();
            _testView.SayHello();
            Console.WriteLine(_testView.txtHello);
            Console.ReadLine();
            }
        }
    }


设计时刻的依赖关系:
HelloView和HelloModel依赖IHelloView,
通过实现IHellowView,消费者开放一组属性,方法或者事件让提供者去处理,
从而可以使用任何类型的提供者
------解决方案--------------------

------解决方案--------------------
没懂是啥意思。
------解决方案--------------------
引用:
Quote: 引用:

还反射加载程序集,你都没看懂咋回事,懒得给你解释了


谢谢你不解释,你省事,我省心。
------解决方案--------------------
出售瓜子、花生、汽水
------解决方案--------------------
好复杂,看的我头都大了
------解决方案--------------------
该回复于2013-09-30 22:57:40被版主删除

------解决方案--------------------
太好了,tongyi
------解决方案--------------------
非常简单的东西搞成培训班式的那种“博客体”,实际上大多数时候也我们不必在意了,由它去吧!

我们要也能够抽点时间去宣传直截了当、不搞雷人名词儿的那种程序设计思路,相信大多数人会自己判断。
------解决方案--------------------

我虽然看的模模糊糊的,但是我怀着虚心求教的心在专研你的代码。希望你多多发表一些好帖子。支持。
【giser 师傅你在哪儿】
------解决方案--------------------