有谁知道用 a 拦截dynamic
方法调用(尤其是那些将要引发RuntimeBinderException
s 的方法调用)的方法RealProxy
?我希望捕获异常并在此基础上实现“缺少方法”,但它似乎在拦截器查看之前被抛出。
我的测试看起来像:
dynamic hello = MethodMissingInterceptor<DynamicObject>.Create();
Assert.AreEqual("World", hello.World());
WhereWorld
实际上没有在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
版本可以在 .NET 4.0 上愉快地运行,但可能已经解决了这个问题?