У меня есть фрагмент кода, в котором иногда мне нужно создать новый универсальный тип, но с неизвестным числом общих параметров. Например:
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....
}
Это действительно работает, и достаточно легко, чтобы охватить мои сценарии, но это кажется действительно хакерским. Есть ли лучший способ справиться с этим?