有谁知道用 a 拦截dynamic方法调用(尤其是那些将要引发RuntimeBinderExceptions 的方法调用)的方法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 上愉快地运行,但可能已经解决了这个问题?