2016-03-28 6 views
0

プロジェクトでDynamicProxyを使用しています。私はいくつかのメソッドのためのインターセプターを作成しました。Castle DynamicProxyインターセプタは引数の値を変更できますか?

Castle.DynamicProxy.IInterceptorオブジェクト内でメソッド引数を取得することは可能です。

invocation.Proceed()を呼び出す前に、インターセプタがメソッドに渡される引数の値を変更することはできますか?

答えて

2

はい - 可能です。

この場合、IInvocation.MethodプロパティでReflectionを使用してメソッドパラメータを取得できます。メソッド引数は呼び出しに直接添付されます。 argumentsプロパティは読み取り専用の値(パブリックセッターなし)ですが、タイプはobject[]なので、そのプロパティは書き込み可能です。

したがって、メソッドのパラメータ位置に対応する正しいインデックスを使用して、argumentsオブジェクトに書き込むことによって、インターセプタは引数値を変更できます。

関連する問題