誰かがdynamic
メソッド呼び出し(特にRuntimeBinderException
sを上げる予定の呼び出し)をインターセプトする方法を知ってい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で正常に実行されているバージョンがあるかどうかを誰かが知っていますが、それでも問題に対処できた可能性がありますか?