【问题标题】:Can a Castle DynamicProxy interceptor change argument values?Castle DynamicProxy 拦截器可以更改参数值吗?
【发布时间】:2016-03-29 02:52:44
【问题描述】:

我们在一个项目中使用 DynamicProxy。我为一些方法创建了一个拦截器。

我知道可以在 Castle.DynamicProxy.IInterceptor 对象中获取方法参数。

拦截器能否在调用invocation.Proceed()之前更改传递给方法的参数值?

【问题讨论】:

    标签: c# castle-windsor castle-dynamicproxy


    【解决方案1】:

    是的 - 是的,它可以。

    在这种情况下,可以在IInvocation.Method属性上使用反射来获取方法参数;方法参数直接附加到调用。尽管 arguments 属性是只读值(没有公共设置器),但它的类型为 object[] - 所以它的属性是可写的。

    因此,拦截器可以通过写入arguments 对象,使用与方法参数位置对应的正确索引来更改参数值。

    【讨论】:

      猜你喜欢
      • 2018-10-06
      • 2012-03-31
      • 2011-04-26
      • 2023-03-03
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2011-09-06
      相关资源
      最近更新 更多