是否有攔截方法調用的一個類,所以你可以做AOP?如何攔截一個類的方法調用
例如
我想Teacher.Talk()在兩種情況下執行不同:
class School
{
[Fun]
public void Picnic {
Teacher t = new Teacher();
t.Talk();
}
public void Seminar{
Teacher t = new Teacher();
t.Talk();
}
}
在上面的代碼中,函數野餐由玩轉屬性的裝飾,所以老師的通話功能要比更有趣研討會功能中未由屬性修飾的功能。
我檢查了Castle.DynamicProxy,但它使用代理類並需要一些代碼修改。這無助於解決我的問題,因爲我想使用該屬性來執行配置,因此當決策發生變化時,只需要很少的代碼修改。
非常感謝!
謝謝,但子類提供了一個解決我的問題。我需要在函數的作用域中配置對象行爲,而不是時間範圍。 – Roy 2010-08-04 05:59:12
它只提供部分解決方案。您必須: 1)使用TeacherFactory隱藏您可能正在發回代理的事實。 2)在代理中,你將不得不運行調用堆棧並檢查堆棧中的方法,以查找您感興趣的屬性FunAttribute 3)祈禱您的Teacher.Talk方法在一次調用中不會被調用100萬次內循環某處。 ;-) – SargeATM 2010-08-05 02:17:53