【发布时间】:2016-03-29 02:52:44
【问题描述】:
我们在一个项目中使用 DynamicProxy。我为一些方法创建了一个拦截器。
我知道可以在 Castle.DynamicProxy.IInterceptor 对象中获取方法参数。
拦截器能否在调用invocation.Proceed()之前更改传递给方法的参数值?
【问题讨论】:
标签: c# castle-windsor castle-dynamicproxy
我们在一个项目中使用 DynamicProxy。我为一些方法创建了一个拦截器。
我知道可以在 Castle.DynamicProxy.IInterceptor 对象中获取方法参数。
拦截器能否在调用invocation.Proceed()之前更改传递给方法的参数值?
【问题讨论】:
标签: c# castle-windsor castle-dynamicproxy
是的 - 是的,它可以。
在这种情况下,可以在IInvocation.Method属性上使用反射来获取方法参数;方法参数直接附加到调用。尽管 arguments 属性是只读值(没有公共设置器),但它的类型为 object[] - 所以它的属性是可写的。
因此,拦截器可以通过写入arguments 对象,使用与方法参数位置对应的正确索引来更改参数值。
【讨论】: