博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Castle.Net 基本应用
阅读量:5739 次
发布时间:2019-06-18

本文共 2113 字,大约阅读时间需要 7 分钟。

什么是Castle

Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架、AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务。

官方网站:

提到Castle就不得不说说IOC容器.

IOC容器

IOC(Inversion of Control,反转控制)是一种面向对象设计原则, 是面向对象领域新兴的编程思想 。其原理是组件本身并不与其他组件建立直接的依赖关系,依赖关系将在组件之外的某个地方建立。这样做主要是为了解耦类之间的关系,使得类更加容易测试、重 用,系统更加容易组装和配置。这些先进技术极大促进了软件开发的发展。

还有一种解释:控制反转意味着在系统开发过程中,设计的类将交由容器去控制,而不是在类的内部去控制,类与类之间的关系将交由容器处理,一个类在需 要调用另一个类时,只要调用另一个类在容器中注册的名字就可以得到这个类的实例,与传统的编程方式有了很大的不同,”不用你找,我来提供给你”,这就是控 制反转的含义.

其实说明白了, 反转控制就是依赖注入,两者概念一样.最终目标是都是为了降低系统的耦合关系.

Castle.Net简单应用

说是简单应用,就不对一些特殊操作做出解释啦,具体的系列文章可以看看TerryLee  的.不过就是版本旧了点.

我下载的是Castle.Windsor.2.5.3.可以到官网上去下载.

此例来做一个发送消息的简单例子.来学习Castle.

首先建立两个接口,一个发送消息接口ISend,一个信息内容格式接口IMessage,这里可以形象的把接口当成服务来看.

namespace CastleNetDem2.Container
{
public interface ISend
{
void Send(string Sendform, string SendTo, string Message);
}
}
namespace CastleNetDem2.Container
{
public interface IMessage
{
string FormMessage(string message);
}
}

然后建立实现了这俩个服务的组件,即实现类.

namespace CastleNetDem2.Components
{
public class MessagePro : IMessage
{
 
public string FormMessage(string message)
{
return "[" + message + "]";
}
 
}
}
 
 
namespace CastleNetDem2.Components
{
public class SendPro : ISend
{
public SendPro() { }
 
private IMessage _msgObj;
public SendPro(IMessage msg)
{
this._msgObj = msg;
}
 
public void Send(string Sendform, string SendTo, string Message)
{
Console.WriteLine("{0}发送给{1}消息:{2}", Sendform, SendTo, _msgObj.FormMessage(Message));
}
}
}

下面最重要的就是编写配置文件,

 
 
type="CastleNetDem2.Components.SendPro, CastleNetDem2">
${Message}
 
 
 
 
type="CastleNetDem2.Components.MessagePro, CastleNetDem2"/>
 
 

这里需要注意SendPro的构造注入需要传入一个Message对象.用${}来引入.

测试:

static void Main(string[] args)
{
//容器
IWindsorContainer container = new WindsorContainer(new XmlInterpreter());
 
ISend send = container.GetService
();
 
send.Send("MisYan", "MisJia", "我到家了.");
 
Console.ReadKey();
}

运行结果:

补充

component节点的parameters类型说明:

更具体的说明请访问:

Castle.Windsor.2.5.3 需要引入的 DLL文件Castle.Core.dll,Castle.Windsor.dll

总结

其实注入就是不用去手动的实例化你的对象,而由容器帮你完成这一系列的操作.用IBatis.Net结合Castle使用,想必会非常强大..

转载地址:http://jqyzx.baihongyu.com/

你可能感兴趣的文章
[杂记]欧拉函数表达式推导
查看>>
传智播客视频学习 ---->>>> malloc() 函数的作用
查看>>
ElasticSearch之Centos7下安装
查看>>
480000 millis timeout while waiting for channel to be ready for write异常处理
查看>>
转:关于使用ImageMagick和Tesseract进行简单数字图像识别
查看>>
《几何与代数导引》习题1.36.1
查看>>
微软职位内部推荐-Senior PM
查看>>
javascript
查看>>
强制使用栅格图
查看>>
C#winform项目添加引用编译文件
查看>>
Nginx学习随笔
查看>>
撒花欢迎某妖精!~
查看>>
poj 1988
查看>>
保险相关
查看>>
TYVJ P1070 罗马数字 Label:一定要看的枚举
查看>>
机器学习 —— 类不平衡问题与SMOTE过采样算法
查看>>
Oracle数据文件和临时文件的管理
查看>>
31-黄智涛-模拟调度
查看>>
安装 nodejs,npm,pm2
查看>>
centos6.4下安装mysql
查看>>