通常当您覆盖/执行bool TryDoSomething(...)
方法时,如果它不起作用,则返回false
。处理缺少DynamicObject成员的首选方法是什么?
在DynamicObject
的情况下,我们返回false
,它会抛出一个只包含一般错误消息的异常。
对于
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
这将是
不能调用非委托类型
,就是这样。没有任何信息哪个成员没有工作,也没有什么参数。
到改善这个我只会抛出我自己的异常,而不是返回false
,因为它会失败。
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
// ...
throw new Exception($"Method '{binder.Name}' not found.");
// ...
}
这是对只/最佳方式做到这一点还是有已经别的东西吗?
这是以某种方式打破TryDoSomething
模式,但在另一方面它会失败,所以为什么不呢?它会破坏什么?
thx为downvoting和不留下任何评论。 – t3chb0t
似乎是一个很好的问题,奇怪的是别人会觉得不对。我偏爱你的解决方案,因为看起来很简单,你可以获得异常后的信息。 – KreepN
不知道动态的东西,但不能使用'InvokeMemberBinder.FallBackInvokeMember',它最后一个参数似乎包含有关错误的数据(并用它来给出更明确的消息)? – Sehnsucht