• C# Windsor Castle 简单例子


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

  • 相关阅读:
    8. 使用Java+TestNG+Selenium搭建测试框架做Web UI自动化测试
    7. Selenium的基本使用
    6. Selenium测试工具简介
    4.自动化测试框架及知识体系
    3.当前主流自动化测试工具的对比选型
    2.自动化测试策略
    1.自动化测试概述
    eclipse工程当中的.classpath 和.project文件什么作用?
    Git 命令
    删除指定字符串的算法题,面试时候没做出来
  • 原文地址:https://www.cnblogs.com/wgscd/p/12916426.html
Copyright © 2020-2023  润新知