码迷,mamicode.com
首页 > Windows程序 > 详细

C# Windsor Castle 简单例子

时间:2020-05-19 14:52:55      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:bag   创建   typeof   title   获取   页面   地方   gis   调用   

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方法,这个类虽然看不到有引用的地方,但是它的install 方法会被扫描调用到(如果当某个其他地方有使用到WindsorContainer的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());//这个时候调用到前面的那个类(WindsorInstaller)的Install方法。
 _container.Install(Castle.Windsor.Installer.FromAssembly.Containing(typeof(WindsorInit)));
} 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)。

 

C# Windsor Castle 简单例子

标签:bag   创建   typeof   title   获取   页面   地方   gis   调用   

原文地址:https://www.cnblogs.com/wgscd/p/12916426.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!