天天看点

使用Unity 实现 AOP

<b>前提</b>

引用以下文件

Microsoft.Practices.ObjectBuilder2.dll

Microsoft.Practices.Unity.dll

Microsoft.Practices.Unity.Configuration.dll

Microsoft.Practices.Unity.Interception.dll

Microsoft.Practices.Unity.Interception.Configuration.dll

Microsoft.Practices.Unity.StaticFactory.dll

本文中的实现类继承于IOutput接口

<b>实现效果</b>

我有两个方法可以输出字符串, 调用IOutput的实现类来输出的,如:

调用它即在Main函数中

即可,而AOP的作用是通过其它代码,向op2.Output方法执行前或执行后注入其它执行过程即最后形成的结果可能是:

使用Unity 实现 AOP

这里除了箭头所指的一句外其它的都是注入进去这个方法的。

<b>定义处理代码</b>

这里我们先定义一段处理方法的代码,Unity规定它是ICallHandler的一个实现

好,下面我们来看看怎么把MyHandler与IOutput关联起来,大体有2种方法

<b>1.通过代码直接关联</b>

这种实现方式比较“硬”。

它是利用Atrribute来实现这种关联的,首先,先建一个Attribute。

然后在IOutput的实现中使用如下代码:

这里靠此Attribute就将二者关联了起来

现在执行处写:

That’s all OK.

<b>2.用配置文件处理</b>

如果用配置文件的话就不用Attribute了,所以实现的类如下

这里不使用属性来标记了,而使用配置文件,我们建一个名为Unity.xml的配置文件(配置文件长,可以后看):

最后我们来执行,要比第一种方法复杂一点:

<b>OK这时我们看到的结果就是:</b>

使用Unity 实现 AOP

代码下载: