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 即可獲取特定的實現類。