При переопределении DynamInObject TryInvokeMember (), как выбрать правильную перегрузку для вызова? - PullRequest
1 голос
/ 01 мая 2011

Как реализовать алгоритм выбора правильной перегрузки метода при переопределении следующего метода на DynamicObject?

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

Ответы [ 2 ]

2 голосов
/ 02 мая 2011

Если эта проблема перегрузки связана с пересылкой статически реализованным методам. Решение может состоять в том, чтобы позволить dlr сделать всю работу за вас. Открытый исходный код Dynamitey имеет статический метод, который создает весь код привязки dlr, кэширует его соответствующим образом, а затем вызывает его, и механизм связывания dlr выполняет разрешение перегрузки. пример . В этом примере обрабатываются именованные / необязательные параметры и предполагаемые обобщенные элементы в разрешении перегрузки, однако DynamicObject не предоставляет обобщенные обобщенные значения и не ссылаются на параметры в вызове.

1 голос
/ 25 августа 2011

Это не так просто, так как вы должны учитывать такие вещи, как неявное преобразование типов и параметры переменной длины (которые должны быть сопоставлены с массивами).

Класс MethodCallResolver в структуре Zentrum предоставляет пример того, как найти подходящий метод.

...