Iworb
@Iworb
WEB-разработчик

Передача списка типов в функцию

У меня есть некая функция public void f(Type[] types), которая, допустим, принимает типы.
Эти типы мне нужно зарегистрировать. Как по мне, это бы выглядело так:
foreach(var type in types)
{
     Engine.RegisterType<type>();
}

Т.е. нужно каждый из типов передать в шаблон, но соответственно так нельзя, поэтому и задаю вопрос здесь: как передать в функцию список типов для последующего их использования в шаблонном методе?
Метод обязательно шаблонный (из сторонних библиотек).
Использовать public void f<T>() вряд ли получится, поскольку тут передается только 1 тип, многократный вызов функции тоже не вариант.
  • Вопрос задан
  • 2696 просмотров
Решения вопроса 1
Честно говоря, не очень понятно, почему у Вас нет информации о тех типах, которые требуется зарегистрировать... да и чем плох вариант с f? предоставьте более полную информацию - может найдётся и лучшее решение. тем не менее, вот код, решающий даную задачу:
var mi = Engine.GetType().GetMethod("RegisterType"); // хотя, этот тип уж точно известен), лучше typeof
foreach (var type in types)
    mi.MakeGenericMethod(new[] { type }).Invoke(null, null);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Kerman
@Kerman
Никак. Для механизма шаблонов нужно получить конкретный тип во время компиляции. В данной ситуации конкретный тип известен только во время выполнения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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