【问题标题】:Castly Dynamic Proxy - Get the target method's return valueCastly 动态代理 - 获取目标方法的返回值
【发布时间】: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


    【解决方案1】:
    invocation.Proceed();
    
    var returnValue = invocation.ReturnValue;
    

    【讨论】:

    • 对我来说总是无效...有什么想法吗?
    • 如果您在invocation.Proceed() 之前调用它,它将为空。毕竟有东西要产生返回值
    猜你喜欢
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多