通常當您覆蓋/執行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