1

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

bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
4

2 に答える 2

2

この過負荷の問題が静的に実装されたメソッドへの転送が原因である場合。解決策は、dlrに作業を任せることです。オープンソースDynamiteyには、すべてのdlrバインディングコードを作成し、適切にキャッシュしてからそれを呼び出す静的メソッドがあり、dlrバインダーは過負荷解決を行います。。この例では、オーバーロード解決で名前付き/オプションのパラメーターと推測されたジェネリックを処理しますが、DynamicObjectは、呼び出しで明示的なジェネリックを公開したり、パラメーターを参照したりしません。

于 2011-05-02T05:10:25.943 に答える
1

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

ZentrumフレームワークのMethodCallResolverクラスは、一致するメソッドを見つける方法の例を提供します。

于 2011-08-25T11:50:22.653 に答える