您的位置:首页 > 其它

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

2015-03-15 14:54 736 查看
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 即可获取特定的实现类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: