I want to create Func type with specified generic type arguments, something like that like, but only with one statement
Type create_type(Type[] types) { return typeof(Func<>).MakeGenericType(types); // error if types.Length != 1 return typeof(Func<,>).MakeGenericType(types); // error if types.Length != 2 return typeof(Func<,,>).MakeGenericType(types); // error if types.Length != 3 return typeof(Func<,,,>).MakeGenericType(types); // error if types.Length != 4 // .... } Of course, I can create auxuliary array:
var func_types = new Type[] { typeof(Func<>), typeof(Func<,>) , //...} But this solution seems too ugly for me
Note: array of types can be long (up to 15) and I want to find elegant solution. Unfortunately, I am creating such type from meta data, written in another language