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

Это - что-то, что я решил отражение использования, но хотел бы видеть, как сделать это с помощью деревьев выражений.

У меня есть родовая функция:

private void DoSomeThing<T>( param object[] args ) {
    // Some work is done here.
}

то, что я еще должен звонить от где в моем классе. Теперь, обычно, это было бы быть простым:

DoSomeThing<int>( blah );

но только если я знаю во время проектирования, что я работаю с int. Когда я не знаю тип, пока время выполнения не то, где я нуждаюсь в помощи. Как я сказал, я знаю, как сделать это через отражение, но я хотел бы сделать это через деревья выражений как мой (очень ограниченный), понимание - то, что я могу сделать так.

Какие-либо предложения или точки на сайты, где я могу получить это понимание, предпочтительно с примером кода?

12
задан Wai Ha Lee 28 November 2015 в 10:46
поделиться

1 ответ

MethodInfo.MakeGenericMethod

Затем просто создайте делегат и вызовите его. (не в выражении, конечно; p)

Обновление:

Обычно я предпочитаю использовать для этого универсальные типы, Activator.CreateInstance просто требует меньше работы. Но все зависит от вашей ситуации.

6
ответ дан 2 December 2019 в 22:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: