Welcome

首页 / 软件开发 / .NET编程技术 / Castle IOC容器快速入门

Castle IOC容器快速入门2011-01-31 cnblogs terrylee主要内容

1.为什么要IOC

2.什么是Castle IOC容器

3.快速入门示例

4.几个重要的概念

一,为什么要IOC

IOC(控制反转或者叫依赖注入)Martin Fowler大师在他的文章中已经讲解的非常精彩了,这里实在不敢班门弄斧,只好简单地解释几句。我们使用抽象接口来隔离使用者和具体实现之间的依赖关系,但是不管再怎么抽象,最终还是要创建具体实现类的实例,这种创建具体实现类的实例对象就会造成对于具体实现的依赖,为了消除这种创建依赖性,需要把依赖移出到程序的外部(比如配置文件)。使用依赖注入后,这些类完全是基于抽象接口编写而成的,所以可以最大限度地适应需求的变化。依赖注入的形式有三种,分别为构造子注入(Constructor Injection)、设值方法注入(Setter Injection)和接口注入(Interface Injection)。

二.什么是Castle IOC容器

Windsor是Castle 的一个IOC容器。它构建于MicroKernel之上,功能非常之强大,能检测类并了解使用这些类时需要什么参数,检测类型和类型之间工作依赖性,并提供服务或者发生错误时提供预警的机制。

三.快速入门示例

现在假如我们有这样一个需求,开发一个日志组件,把日志信息输出到文本文件,同时对输出的信息进行格式化,以示意性的代码来实现。

1.新建一个C#工程,添加对以下Dll的引用

Castle.DynamicProxy.dll

Castle.MicroKernel.dll

Castle.Model.dll

Castle.Windsor.dll

2.编写服务

既然是日志组件,我们先添加两个接口分别为ILog和ILogFormatter,这样的接口我们一般叫做服务,即实现了某种服务的接口(后面会讲到)。

/**//// <summary>
/// 编写:Terrylee
/// 出处:http://terrylee.cnblogs.com
/// </summary>
public interface ILog
{
void Write(string MsgStr);
}
/**//// <summary>
/// 编写:Terrylee
/// 出处:http://terrylee.cnblogs.com
/// </summary>
public interface ILogFormatter
{
string Format(string MsgStr);
}