diff --git a/src/Shared/SharedTypeExtensions.cs b/src/Shared/SharedTypeExtensions.cs index 3fe4acf..e73b132 100644 --- a/src/Shared/SharedTypeExtensions.cs +++ b/src/Shared/SharedTypeExtensions.cs @@ -63,6 +63,20 @@ namespace System && !type.IsInterface && (!type.IsGenericType || !type.IsGenericTypeDefinition); + public static bool IsGrouping(this Type type) => IsGrouping(type.GetTypeInfo()); + +#if NETCOREAPP3_1 + private static bool IsGrouping(TypeInfo type) + => type.IsGenericType + && (type.GetGenericTypeDefinition() == typeof(IGrouping<,>) + || type.GetGenericTypeDefinition() == typeof(SystemInteractiveAsync::System.Linq.IAsyncGrouping<,>)); +#else + private static bool IsGrouping(TypeInfo type) + => type.IsGenericType + && (type.GetGenericTypeDefinition() == typeof(IGrouping<,>) + || type.GetGenericTypeDefinition() == typeof(IAsyncGrouping<,>)); +#endif + public static Type UnwrapEnumType(this Type type) { var isNullable = type.IsNullableType();