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)。
C# Windsor Castle 简单例子的更多相关文章
- Hibernate4.2.4入门(一)——环境搭建和简单例子
一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- spring mvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
- ko 简单例子
Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...
- mysql定时任务简单例子
mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9 如果要每30秒执行以下语句: [sql] update userinfo set endtime = now() WHE ...
- java socket编程开发简单例子 与 nio非阻塞通道
基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...
- 一个简单例子:贫血模型or领域模型
转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...
- [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select
以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...
- jsonp的简单例子
jsonp的简单例子 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...
- Java-马士兵设计模式学习笔记-观察者模式-AWT简单例子
1.AWT简单例子 TestFrame.java import java.awt.Button; import java.awt.Frame; import java.awt.event.Action ...
随机推荐
- SLS:整层剪掉!基于降维特征聚类的PETL模型剪枝新方法 | ECCV'24
来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: Straightforward Layer-wise Pruning for More Efficient Visual Adaptation ...
- 题解:CF1537E2 Erase and Extend (Hard Version)
CF1537E2 Erase and Extend 题解 分析 通过观察题目,可以证明结果一定是由多次前缀复制得来的. 题目要求你进行删和复制的操作,与其交替着操作,不如直接先删到最优的前缀再进行复制 ...
- 【VMware VCF】通过备份的配置文件还原 SDDC Manager 组件。
之前在这篇文章(使用 SFTP 服务器备份 VCF 核心组件的配置文件.)中配置并备份了 VCF 环境中 SDDC Manager 组件的配置文件,这篇文章接着这个主题,看看当 SDDC Manage ...
- 【Azure App Service】在App Service for Windows上验证能占用的内存最大值
问题描述 在创建App Service服务的时候,根据定价层不同,内存使用的最大值也有不同.但在实际测试中,发现内存最大只能占用2GB左右, 而定价层中内存分配明明是大于2GB(比如B3定价层的内存为 ...
- 两个新出的 JavaScript 运算符
在 ECMAScript 2021(ES12)中,JavaScript 引入了新的逻辑赋值操作符 &&= 和 ??=.这些操作符将逻辑运算符与赋值运算符相结合,提供了更加简洁.直观的赋 ...
- 李继刚Lisp提示词灵感之源:压缩推动进步
前面在文章< 访谈李继刚:从哲学层面与大模型对话 >中提到,继刚总结去年写提示词的核心理念是"清晰表达",而今年则是"压缩表达",既而才有火爆全网的 ...
- QT5.15.2 连接MySQL 驱动问题解决方案,无论菜鸟🐦️还是老鸟🦜,解决了就是好鸟🦚
最新在学QT,现在QT只能在线安装了,用了几天,看到数据库时,需要用MySQL,结果出现了问题. QSqlDatabase: QMYSQL driver not loaded. QSqlDatabas ...
- golang之媒体处理
[视频] 获取视频封面图: 1) 如果是使用oss的话, 可以添加指定的后缀生成指定图片 视频截帧: https://help.aliyun.com/zh/oss/user-guide/video-s ...
- Javascript 常用封装(一)
1.获取URL的query参数 作用:根据传入的属性名输出对应的值,没有则输出null 注意:url传参中包含中文时,默认的获取结果会乱码,需要进行解码 //解析query传参 url参数中含有中文时 ...
- 一个大幅提高开发效率的工具库 WYBasisKit
WYBasisKit (持续更新) WYBasisKit 是做什么的? WYBasisKit 不仅可以帮助开发者快速构建一个工程,还有基于常用网络框架和系统API而封装的各种实用方法.扩展,开发者只需 ...