Skip to content

Commit 154c3d8

Browse files
author
Michael Croes
committed
Simplify IsEnumerableType implementation
1 parent 67c6900 commit 154c3d8

File tree

2 files changed

+3
-9
lines changed

2 files changed

+3
-9
lines changed

src/AutoMapper.Extensions.ExpressionMapping/ExpressionMapper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ private Expression VisitAllParametersExpression<T>(Expression<T> expression)
173173
from t in expression.Parameters
174174
let sourceParamType = t.Type
175175
from destParamType in _destSubTypes.Where(dt => dt != sourceParamType)
176-
let a = destParamType.IsEnumerableType(out var itemType) ? itemType : destParamType
176+
let a = destParamType.IsEnumerableType() ? destParamType.GetGenericElementType() : destParamType
177177
let typeMap = _configurationProvider.ResolveTypeMap(a, sourceParamType)
178178
where typeMap != null
179179
let oldParam = t

src/AutoMapper.Extensions.ExpressionMapping/TypeExtensions.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -172,13 +172,7 @@ public static bool IsQueryableType(this Type type)
172172
public static Type GetGenericElementType(this Type type)
173173
=> type.HasElementType ? type.GetElementType() : type.GetTypeInfo().GenericTypeArguments[0];
174174

175-
public static bool IsEnumerableType(this Type type, out Type itemType)
176-
{
177-
itemType = type.GetInterfaces()
178-
.FirstOrDefault(t => t.GetGenericTypeDefinitionIfGeneric() == typeof(IEnumerable<>))
179-
?.GetGenericArguments()[0];
180-
181-
return itemType != null;
182-
}
175+
public static bool IsEnumerableType(this Type type) =>
176+
type.IsGenericType && typeof(System.Collections.IEnumerable).IsAssignableFrom(type);
183177
}
184178
}

0 commit comments

Comments
 (0)