誰かがdynamicメソッド呼び出し(特にRuntimeBinderExceptionsを上げる予定の呼び出し)をインターセプトする方法を知っていRealProxyますか?私は例外をキャッチし、その上に「メソッドがありません」を実装することを望んでいましたが、インターセプターがルックインを取得する前にスローされたようです。
私のテストは次のようになります。
dynamic hello = MethodMissingInterceptor<DynamicObject>.Create();
Assert.AreEqual("World", hello.World());
Worldに実際に実装されていない場所DynamicObject。IMethodReturnMessage.Exceptionインターセプターは非常に単純です-私は次のようなものをチェックしRuntimeBinderExceptionて転送することを望んでいました:
public IMessage MethodMissing(IMethodCallMessage call)
{
return new ReturnMessage(call.MethodBase.Name, new object[0], 0, call.LogicalCallContext, call);
}
残念ながら、インターセプターに表示されるのは、への呼び出しGetTypeだけであり、存在しないWorldメソッドではありません。
DynamicProxyそれが失敗した場合-.NET4.0で正常に実行されているバージョンがあるかどうかを誰かが知っていますが、それでも問題に対処できた可能性がありますか?