0
我們在項目中使用DynamicProxy。我爲幾種方法創建了一個攔截器。Castle DynamicProxy攔截器可以更改參數值嗎?
我知道可以在Castle.DynamicProxy.IInterceptor
對象中獲取方法參數。
在調用invocation.Proceed()
之前,攔截器是否可以更改傳遞給方法的參數的值?
我們在項目中使用DynamicProxy。我爲幾種方法創建了一個攔截器。Castle DynamicProxy攔截器可以更改參數值嗎?
我知道可以在Castle.DynamicProxy.IInterceptor
對象中獲取方法參數。
在調用invocation.Proceed()
之前,攔截器是否可以更改傳遞給方法的參數的值?
是的 - 是的,它可以。
在這種情況下,可以使用IInvocation.Method
屬性上的Reflection來獲取方法參數;方法參數直接附加到調用。雖然arguments屬性是一個只讀值(不是公共setter),但它的類型爲object[]
- 因此它的屬性是可寫的。
因此,攔截器可以通過寫入arguments
對象,使用對應於方法參數位置的正確索引來更改參數值。