Создание универсальных типов с множеством типов

У меня есть фрагмент кода, в котором иногда мне нужно создать новый универсальный тип, но с неизвестным числом общих параметров. Например:

public object MakeGenericAction(Type[] types)
{
  return typeof(Action<>).MakeGenericType(paramTypes);
}

Проблема в том, что если у меня в массиве более одного типа, программа выйдет из строя. В краткосрочной перспективе я придумал что-то вроде этого в качестве временной остановки.

public object MakeGenericAction(Type[] types)
{
  if (types.Length == 1)
  {
    return typeof(Action<>).MakeGenericType(paramTypes);
  }
  else if (types.Length ==2)
  {
    return typeof(Action<,>).MakeGenericType(paramTypes);
  }
  ..... And so on....
}

Это действительно работает, и достаточно легко, чтобы охватить мои сценарии, но это кажется действительно хакерским. Есть ли лучший способ справиться с этим?

6
задан A.R. 7 June 2011 в 17:05
поделиться