|
@@ -154,22 +154,21 @@ namespace Fort23.Mono
|
|
|
{
|
|
|
return null;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- if (typeof(T).IsGenericType && typeof(T).GetGenericTypeDefinition() == typeof(List<>))
|
|
|
+
|
|
|
+
|
|
|
+ if (typeof(T).IsGenericType && typeof(T).GetGenericTypeDefinition() == typeof(List<>) &&
|
|
|
+ dictGo.GetType().IsGenericType && dictGo.GetType().GetGenericTypeDefinition() == typeof(List<> ))
|
|
|
{
|
|
|
-
|
|
|
- if (dictGo is IEnumerable<object> enumerable)
|
|
|
+ Type elementType = typeof(T).GetGenericArguments()[0];
|
|
|
+
|
|
|
+ Type listType = typeof(List<>).MakeGenericType(elementType);
|
|
|
+ var list = Activator.CreateInstance(listType);
|
|
|
+ foreach (var item in dictGo as List<object>)
|
|
|
{
|
|
|
-
|
|
|
- Type elementType = typeof(T).GetGenericArguments()[0];
|
|
|
-
|
|
|
- var method = typeof(Enumerable).GetMethod(nameof(Enumerable.OfType)).MakeGenericMethod(elementType);
|
|
|
- var result = method.Invoke(null, new[] { enumerable });
|
|
|
-
|
|
|
- var toListMethod = typeof(Enumerable).GetMethod(nameof(Enumerable.ToList)).MakeGenericMethod(elementType);
|
|
|
- return toListMethod.Invoke(null, new[] { result }) as T;
|
|
|
+ listType.GetMethod("Add").Invoke(list, new[] { item });
|
|
|
}
|
|
|
+
|
|
|
+ return list as T;
|
|
|
}
|
|
|
|
|
|
return dictGo as T;
|