using System;

public static class TupleExtensions
{
    public static readonly Type[] GenericTupleTypes = new Type[]
{
    typeof(Tuple),
    typeof(Tuple<>),
    typeof(Tuple<,>),
    typeof(Tuple<,,>),
    typeof(Tuple<,,,>),
    typeof(Tuple<,,,,>),
    typeof(Tuple<,,,,,>),
    typeof(Tuple<,,,,,,>),
    typeof(Tuple<,,,,,,,>)
};

    public static Type GetGenericTupleType(int argumentsCount) 
        => GenericTupleTypes[argumentsCount];

    public static Type CreateTupleType(Type[] signature)
        => GetGenericTupleType(signature.Length)
            .MakeGenericType(signature);
}