【发布时间】:2011-10-12 05:27:24
【问题描述】:
使用城堡动态代理代理对象和拦截方法时,是否可以获取目标方法的返回值?我尝试过使用以下方法,
object result = invocation.GetConcreteMethod().Invoke(instance, null);
object result = invocation.GetConcreteMethodInvocationTarget().Invoke(instance, null);
这会导致无限循环。我希望能够在调用 Invocation.Proceed() 之前获得被代理的原始目标方法的返回值。
编辑 -- 仅供参考,我使用 Activator.CreateInstance 让它工作,但我想知道是否有更简洁的方法来实现等效:
object instance = Activator.CreateInstance(invocation.TargetType);
invocation.MethodInvocationTarget.Invoke(instance, invocation.Arguments);
问题是这只是原始对象的一个新的未代理实例,而我想要原始的未代理实例本身。
【问题讨论】:
标签: c# reflection castle-windsor castle-dynamicproxy