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();
要想从容器中获取特定的类只需调用container.Resolve 即可获取特定的实现类。
文章来自:http://blog.csdn.net/eye_cng/article/details/44277151