c# Castle Windsor簡單例子


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)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM