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 简单例子的更多相关文章

  1. Hibernate4.2.4入门(一)——环境搭建和简单例子

    一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...

  2. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  3. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  4. ko 简单例子

    Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...

  5. mysql定时任务简单例子

    mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9     如果要每30秒执行以下语句:   [sql] update userinfo set endtime = now() WHE ...

  6. java socket编程开发简单例子 与 nio非阻塞通道

    基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...

  7. 一个简单例子:贫血模型or领域模型

    转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...

  8. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  9. jsonp的简单例子

    jsonp的简单例子 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...

  10. Java-马士兵设计模式学习笔记-观察者模式-AWT简单例子

    1.AWT简单例子 TestFrame.java import java.awt.Button; import java.awt.Frame; import java.awt.event.Action ...

随机推荐

  1. Java面试题中高级进阶(JVM篇01)

    前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说堆和栈的区别?什么时候会触发FullGC?什么是Java虚拟机?似乎有点模糊了,那就大概看一下面试题吧.好记性不如烂键盘 *** 12 ...

  2. 【2024.09.27】NOIP2024 赛前集训-刷题训练(3)

    [2024.09.27]NOIP2024 赛前集训-刷题训练(3) NOIP2018 提高组 铺设道路 算法一:模拟正常人铺路的过程,每次找区间的最小值,最小值就是本次填的高度,由于出现了若干个0位置 ...

  3. 鸿蒙NEXT开发案例:转盘

    [1]引言(完整代码在最后面) 在鸿蒙NEXT系统中,开发一个有趣且实用的转盘应用不仅可以提升用户体验,还能展示鸿蒙系统的强大功能.本文将详细介绍如何使用鸿蒙NEXT系统开发一个转盘应用,涵盖从组件定 ...

  4. 硬件设计很简单?合宙低功耗4G模组Air780E—开机启动及外围电路设计

    ​ Air780E是合宙低功耗4G-Cat.1模组经典型号之一,上期我们解答了大家关心的系列问题,并讲解了选型的注意要点. 有朋友问:能不能讲些硬件设计相关的内容? 模组的上电开机,是硬件设计调试的第 ...

  5. php ice框架

    ice框架是php扩展框架 概念和 yaf Phalcon 那种框架类似,就是把框架编译为C扩展,调用起来就等于调用C,这样框架本身的加载消耗就省下来了. pecl  https://pecl.php ...

  6. pydotplus使用

    pydotplus是别的语言嫁接到python里面的,所以绘制要传入字符串形式表示的结构,而没有python的结构对象直接用来画.代码如下: import pydotplus as pdp graph ...

  7. Impala源代码分析(2)-SQL解析与执行计划生成

    7 Replies Impala的SQL解析与执行计划生成部分是由impala-frontend(Java)实现的,监听端口是21000.用户通过Beeswax接口BeeswaxService.que ...

  8. cmu15545笔记-并发控制总结(Concurrency Control Summary)

    目录 总览 ACID 串行化与冲突操作 隔离级别 概念层级 二阶段锁 原理 级联回滚 强二阶段锁 死锁检测和避免 锁层级 实践应用 实现的隔离级别 OOC 原理 三个阶段 实现的隔离级别 处理幻读 M ...

  9. Element-UI 调整

    1.对话框 当打开的对话框页面元素众多,俨然一个iframe页面时,可以做2个优化: 滚动条:对话框去滚动,当对话框内容过多时,把滚动条控制在对话框内部,避免出现页面级的滚动条 标题栏:优化对话框标题 ...

  10. 药企如何实现ERP系统与CRM系统的整合

    ERP系统与CRM系统整合的意义深远,对于企业尤其是药企来说,这种整合能够带来多方面的优势和改进.可以确保企业内部数据的一致性和准确性:优化业务流程.增强决策支持:从而提高企业的整体运营效率和市场竞争 ...