天天看點

使用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

代碼下載下傳: