Re[12]: Приоритет вызова перегруженных методов
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 08.06.16 07:38
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>1. CallSite под определенную сигнатуру (CallSite<Action<CallSite, Type, object, object>> )

S>Угу. Но нагенерить конечное количество не проблема как бы, достаточно прошвырнуться по GetMethods().
У меня обертка не для одного типа, а для вех возможных типов, о которых я не знаю на этапе компиляции.
В DLR уже заранее известно и имя метода и количество параметров.
Для моего подхода это не совсем удобно, хотя конечно можно и поизвращаться.
Но по моему проще самому написать поиск нужного метода. Это не сложно. Логика приоритеты мне понятны.
Кстати возможно, что при вызове GetMethods они идут уже в приоритетно порядке. Посмотрю.



S>>2. Как определить с params (удобно передавать без массива)


S>Не, ну до такой степени лениться — это уже перебор Первый вызов в примере.

Прошу прощения. Я уже подправил ответ.

S>>3. Каково время на компиляцию если для каждого вызова нужно создавать CallSite?

S>Хитрый план:
S>1. Взять штуку, которая используется под капотом IronPython/IronRuby/прочих динамических языков под CLR.
S>2. Подозревать, что оно может тормозить.
S>

S>Не для каждого, а для первого. CallSite кэширует сгенеренные делегаты.

Ну у меня то может быть всего один раз.


S>> Пока это мало чем отличается от T.GetMethod(имяМетода,Type[] типы);

S>Не вопрос, как сделаете корректное разруливание перегрузок по значениям аргументов в GetMethod() — так сразу и приходите.
Да там не так и сложно. Если GetMethods() выдает по приоритету.

S>P.S. И чистите при ответе оверквотинг Глаза же вылазят.

Ок.
и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.