소스 검색

Fixed ChangeType for arrays

Kenric Nugteren 1 주 전
부모
커밋
3bf9f59656
1개의 변경된 파일12개의 추가작업 그리고 2개의 파일을 삭제
  1. 12 2
      InABox.Core/CoreUtils.cs

+ 12 - 2
InABox.Core/CoreUtils.cs

@@ -572,7 +572,7 @@ namespace InABox.Core
                     return Guid.Empty;
                 }
 
-            if (value is IEnumerable<object> objList)
+            if (value is IEnumerable<object?> objList)
             {
                 if(type == typeof(Guid))
                 {
@@ -580,7 +580,17 @@ namespace InABox.Core
                 }
                 else if (type.IsArray)
                 {
-                    return objList.Select(x => ChangeType(x, type.GetElementType())).ToArray();
+                    var elementType = type.GetElementType();
+                    var collection = value as ICollection<object?> ?? objList.ToList();
+
+                    var arr = Array.CreateInstance(elementType, collection.Count);
+                    var i = 0;
+                    foreach(var val in collection)
+                    {
+                        arr.SetValue(ChangeType(val, elementType), i);
+                        ++i;
+                    }
+                    return arr;
                 }
             }