Здравствуйте, 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. И чистите при ответе оверквотинг Глаза же вылазят.
Ок.