0
我们在项目中使用DynamicProxy。我为几种方法创建了一个拦截器。Castle DynamicProxy拦截器可以更改参数值吗?
我知道可以在Castle.DynamicProxy.IInterceptor
对象中获取方法参数。
在调用invocation.Proceed()
之前,拦截器是否可以更改传递给方法的参数的值?
我们在项目中使用DynamicProxy。我为几种方法创建了一个拦截器。Castle DynamicProxy拦截器可以更改参数值吗?
我知道可以在Castle.DynamicProxy.IInterceptor
对象中获取方法参数。
在调用invocation.Proceed()
之前,拦截器是否可以更改传递给方法的参数的值?
是的 - 是的,它可以。
在这种情况下,可以使用IInvocation.Method
属性上的Reflection来获取方法参数;方法参数直接附加到调用。虽然arguments属性是一个只读值(不是公共setter),但它的类型为object[]
- 因此它的属性是可写的。
因此,拦截器可以通过写入arguments
对象,使用对应于方法参数位置的正确索引来更改参数值。