Windsor是Castle的IOC框架。需要用到兩個dll(Castle.Core.dll和Castle.Windsor.dll)。
1、接口以及接口實現類:
public interface ITest { int Add(int a, int b); }
public class Test:ITest { public int Add(int a, int b) { return a + b; } }
2、創建自定義類WindsorInstaller,繼承IWindsorInstaller,實現IWindsorInstaller的Install方法,如下:
public class WindsorInstaller: IWindsorInstaller { public void Install(IWindsorContainer container, IConfigurationStore store) { //單個注冊法,還有其他方式 //ITest為接口,Test為接口的實現類 container.Register(Component.For<ITest>().ImplementedBy<Test>()); } }
3、創建自定義類WindsorInit,單例模式獲取ioc容器:
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(); } }
4、mvc中controller中使用:
public class HomeController : Controller { private ITest _test; public ActionResult Index() { WindsorContainer container = WindsorInit.GetContainer(); _test = container.Resolve<ITest>(new Arguments(new { })); var result = _test.Add(10,20); ViewBag.result = result; return View(); } }
頁面會輸出結果:30
這里簡單實現Castle Windsor(IOC)。