通常、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
動的なものはよく分かりませんが、最後のargがエラーに関するデータを含んでいるように見える(InvokeMemberBinder.FallBackInvokeMember)ことはできませんでした。 – Sehnsucht