码迷,mamicode.com
首页 > Windows程序 > 详细

Castle学习系列(九)---Windsor框架快速入门

时间:2015-03-15 17:00:14      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:ioc   castle   windsor   控制反转   解耦   

        Windsor是Castle提供的一个IOC框架,使用非常简单,支持批量注册。开始快速入门

        首先引用dll

 技术分享

两个dll版本均是最新的3.3.0.0

新建两个接口文件IPrinter(打印接口)和ICharge(收费接口)

    public interface IPrinter
    {
        void RegPrint(int regID);
        void ClinicPrint(int chargeID);
    }


    public interface ICharge
    {
        void ClinicChcarge();
    }
然后分别建立实现:

    public class WenZhouPrinter:IPrinter
    {
        public void RegPrint(int regID)
        {
            Console.WriteLine("温州挂号打印 "+regID.ToString());
        }
        public void ClinicPrint(int chargeID)
        {
            Console.WriteLine("温州门诊打印 " + chargeID.ToString());
        }
    }


    public class WenZhouCharge:ICharge
    {
        public IPrinter printer { set; get; }
        
        public void ClinicChcarge()
        {
            Console.WriteLine("温州门诊收费");
            printer.ClinicPrint(100000);
        }
    }

之后就可以进行IOC容器的相关配置了,配置步骤如下:1.新建继承自IWindsorInstaller的安装类,在容器初始化的时候需要加载该安装类。2.在安装类中注册需要加入容器控制的接口及实现。

具体代码如下:

    public class ChargeInstaller : IWindsorInstaller
    {
        public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            container.Register(Classes.FromThisAssembly().InNamespace("CastleWindsor.IEntity").WithService.DefaultInterfaces());
        }
    }

其中CastleWindsor.IEntity是实现类所在的空间。

    public class WindsorInit
    {
        private static WindsorContainer _container;
        public static WindsorContainer GetContainer()
        {
            if (_container == null)
            {
                _container = new WindsorContainer();
                _container.Install(
                       FromAssembly.This()
                       );
            }
            return _container;
        }

        public void CloseContex()
        {
            _container.Dispose();
        }
    }


然后客户端代码只用如下调用即可

    WindsorContainer container=WindsorInit.GetContainer();
    ICharge charge = container.Resolve<ICharge>(new Arguments(new { }));
    charge.ClinicChcarge();


从以上代码可以发现Windsor的代码配置分两步1.注册相关实现类到特定的安装类2.执行安装类的安装。

要想从容器中获取特定的类只需调用container.Resolve 即可获取特定的实现类。

Castle学习系列(九)---Windsor框架快速入门

标签:ioc   castle   windsor   控制反转   解耦   

原文地址:http://blog.csdn.net/eye_cng/article/details/44277151

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