DynamicObjectのtryinvokemember()をオーバーライドするとき、正しい過負荷を選択して呼び出す方法は?

StackOverflow https://stackoverflow.com/questions/5846107

質問

次のメソッドをオーバーライドするときに、正しいメソッドの過負荷を選択するためにアルゴリズムをどのように実装しますか DynamicObject?

bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
役に立ちましたか?

解決

この過負荷の問題が静的に実装された方法への転送によるものである場合。解決策は、DLRにあなたのために仕事をさせることです。オープンソース Dynamitey すべてのDLRバインディングコードを作成する静的メソッドがあり、適切にキャッシュしてからそれを呼び出し、DLRバインダーは過負荷解像度を行います。 . 。この例は、named/optional paramsを処理し、過負荷解像度で推測されたジェネリックを処理しますが、dynamicObjectは描写genericsを公開したり、呼び出しのパラメーションを参照したりしません。

他のヒント

暗黙の型変換や可変長さのパラメーター(配列にマッピングする必要がある)などを考慮する必要があるため、簡単ではありません。

MethodCallReSolver のクラス ゼントラム フレームワークは、マッチング方法を見つける方法の例を提供します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top