У меня есть массив Type [], и я хочу получить тип Func, где T1, T2 и т. Д. Соответствуют типам в массиве. Размер массива не фиксированный, но предполагается, что тип доступен во время выполнения (16 в .NET 4, 4 в .NET 3.5).
В .NET 4 я могу сделать это, и это работает:
Type GetFuncType(Type typeRet, Type[] types)
{
return Type.GetType(string.Format("System.Func`{0}", types.Length + 1))
.MakeGenericType(types.Concat(new Type[] { typeRet } ).ToArray())
}
В .NET 3.5, однако, Type.GetType для открытого универсального типа завершается ошибкой, возвращая NULL.
Есть ли способ заставить эту работу работать в .NET 3.5? Моя единственная мысль - создать строку для близкого универсального типа.