强制动态代理 - 获取目标方法的返回值



当使用castle动态代理代理对象和拦截方法时,是否有可能获得目标方法的返回值?我试过使用以下方法,

object result = invocation.GetConcreteMethod().Invoke(instance, null); 
object result = invocation.GetConcreteMethodInvocationTarget().Invoke(instance, null); 

这会导致无限循环。我希望能够在调用Invocation.Proceed()之前获得被代理的原始目标方法的返回值。

编辑—仅供参考,我通过使用Activator使其工作。创建实例,但我想知道是否有一个更干净的方法来实现等效:

object instance = Activator.CreateInstance(invocation.TargetType); 
invocation.MethodInvocationTarget.Invoke(instance, invocation.Arguments); 

问题是,这只是原始对象的一个新的非代理实例,而我想要原始的非代理实例本身。

invocation.Proceed();
var returnValue = invocation.ReturnValue;

相关内容

  • 没有找到相关文章

最新更新