是否有拦截方法调用的一个类,所以你可以做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