Try the following:
public static bool IsTupleType(Type type, bool checkBaseTypes = false) { if (type == null) throw new ArgumentNullException(nameof(type)); if (type == typeof(Tuple)) return true; while (type != null) { if (type.IsGenericType) { var genType = type.GetGenericTypeDefinition(); if (genType == typeof(Tuple<>) || genType == typeof(Tuple<,>) || genType == typeof(Tuple<,,>) || genType == typeof(Tuple<,,,>) || genType == typeof(Tuple<,,,,>) || genType == typeof(Tuple<,,,,,>) || genType == typeof(Tuple<,,,,,,>) || genType == typeof(Tuple<,,,,,,,>) || genType == typeof(Tuple<,,,,,,,>)) return true; } if (!checkBaseTypes) break; type = type.BaseType; } return false; }
source share