public static Type GetItemTypeOfClosedGenericIEnumerable(Type enumerableType, string argumentName) { LinqUtility.CheckNotNull("enumerableType", enumerableType); LinqUtility.CheckNotNullOrEmpty("argumentName", argumentName); Type itemType; if (!TryGetItemTypeOfClosedGenericIEnumerable(enumerableType, out itemType)) { var message = string.Format("Expected a closed generic type implementing IEnumerable<T>, but found '{0}'.", enumerableType); throw new ArgumentException(message, argumentName); } return(itemType); }