Castly动态代理—获取目标方法的返回值
本文关键字:方法 返回值 目标 获取 动态 代理 Castly | 更新日期: 2023-09-27 18:03:13
当使用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;