(client) feat:做了初始化加载动画。 fix:修复定义加载列表和加载枚举时的错误识别
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
@ -279,10 +280,14 @@ namespace Data
|
||||
value = reference;
|
||||
}
|
||||
}
|
||||
else if(field.FieldType.IsArray)
|
||||
else if(field.FieldType.IsArray||typeof(IList).IsAssignableFrom(field.FieldType))
|
||||
{
|
||||
value = ProcessArrayField(field, element);
|
||||
}
|
||||
else if (field.FieldType.IsEnum)
|
||||
{
|
||||
value = Enum.Parse(field.FieldType, element.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
value = Convert.ChangeType(element.Value, field.FieldType);
|
||||
@ -291,13 +296,14 @@ namespace Data
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogWarning($"Error setting field {field.Name}: {ex.Message}");
|
||||
Debug.LogWarning($"Error setting field ,field name:{field.Name}; value: {element.Value}; error: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static object ProcessArrayField(FieldInfo field, XElement element)
|
||||
{
|
||||
Type elementType = field.FieldType.GetElementType();
|
||||
var elementType = field.FieldType.GetElementType();
|
||||
if (elementType == null) return null;
|
||||
|
||||
var arrayElements = new List<object>();
|
||||
@ -305,7 +311,7 @@ namespace Data
|
||||
{
|
||||
if (elementType.IsSubclassOf(typeof(Define)))
|
||||
{
|
||||
Define nestedDefine = (Define)Activator.CreateInstance(elementType);
|
||||
var nestedDefine = (Define)Activator.CreateInstance(elementType);
|
||||
DefaultInitDefine(nestedDefine, liElement, elementType);
|
||||
arrayElements.Add(nestedDefine);
|
||||
}
|
||||
@ -326,8 +332,8 @@ namespace Data
|
||||
}
|
||||
|
||||
// 构建结果数组
|
||||
Array resultArray = Array.CreateInstance(elementType, arrayElements.Count);
|
||||
for (int i = 0; i < arrayElements.Count; i++)
|
||||
var resultArray = Array.CreateInstance(elementType, arrayElements.Count);
|
||||
for (var i = 0; i < arrayElements.Count; i++)
|
||||
{
|
||||
resultArray.SetValue(arrayElements[i], i);
|
||||
}
|
||||
|
Reference in New Issue
Block a user