XFEExtension
【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
关注
0
Fork
0
Star
0
返回提交历史
Modified
XFEExtension.NetCore/XFETransform/ObjectInfo.cs
+4
-1
Modified
XFEExtension.NetCore/XFETransform/ObjectPlace.cs
+12
-0
Modified
XFEExtension.NetCore/XFETransform/XFEConverter.cs
+13
-11
XFEstudio/XFEExtension
优化属性获取
cd7b478
代码差异
3 个文件
+29
-12
@@ -61,7 +61,10 @@ internal abstract class ObjectInfo : IObjectInfo
61
61
ObjectPlace.Property => "[属性]",
62
62
ObjectPlace.Field => "[字段]",
63
63
ObjectPlace.Main => "[主体]",
64
ObjectPlace.Other => "[无]",
64
ObjectPlace.Array => "[数组]",
65
ObjectPlace.List => "[列表]",
66
ObjectPlace.Enum => "[枚举]",
67
ObjectPlace.Other => "[其他]",
65
68
_ => string.Empty,
66
69
};
67
70
@@ -18,6 +18,18 @@ public enum ObjectPlace
18
18
/// </summary>
19
19
Main,
20
20
/// <summary>
21
/// 枚举
22
/// </summary>
23
Enum,
24
/// <summary>
25
/// 列表
26
/// </summary>
27
List,
28
/// <summary>
29
/// 数组
30
/// </summary>
31
Array,
32
/// <summary>
21
33
/// 其他
22
34
/// </summary>
23
35
Other
@@ -65,27 +65,29 @@ public class XFEConverter
65
65
var isBasicType = IsBasicType(type);
66
66
if (isBasicType)
67
67
return new ObjectInfoImpl(name, objectPlace, layer, type, true, value);
68
else if (value is null)
69
return new ObjectInfoImpl(name, objectPlace, layer, type, false, false);
70
68
else
71
69
{
70
if (type.IsAssignableTo(typeof(Array)))
71
{
72
var arrayObjects = new SubObjectsImpl();
73
foreach (var item in (Array)value)
74
{
75
arrayObjects.Add(GetObjectInfo("数组成员", ObjectPlace.Array, layer + 1, item.GetType(), item, onlyProperty, onlyPublic));
76
}
77
return new ObjectInfoImpl(name, objectPlace, layer, type, false, true, value, arrayObjects);
78
}
72
79
if (type.IsAssignableTo(typeof(IEnumerable)))
73
80
{
74
81
var enumerableObjects = new SubObjectsImpl();
75
82
foreach (var item in (IEnumerable)value)
76
83
{
77
enumerableObjects.Add(GetObjectInfo("", ObjectPlace.Other, layer + 1, item.GetType(), item, onlyProperty, onlyPublic));
84
enumerableObjects.Add(GetObjectInfo("列表成员", ObjectPlace.List, layer + 1, item.GetType(), item, onlyProperty, onlyPublic));
78
85
}
79
return new ObjectInfoImpl(name, ObjectPlace.Other, layer, type, false, true, value, enumerableObjects);
86
return new ObjectInfoImpl(name, objectPlace, layer, type, false, true, value, enumerableObjects);
80
87
}
81
if (type.IsAssignableTo(typeof(Array)))
88
if (type.IsValueType)
82
89
{
83
var arrayObjects = new SubObjectsImpl();
84
foreach (var item in (Array)value)
85
{
86
arrayObjects.Add(GetObjectInfo("", ObjectPlace.Other, layer + 1, item.GetType(), item, onlyProperty, onlyPublic));
87
}
88
return new ObjectInfoImpl(name, ObjectPlace.Other, layer, type, false, true, value, arrayObjects);
90
return new ObjectInfoImpl(name, objectPlace, layer, type, false, value);
89
91
}
90
92
var subObjects = new SubObjectsImpl();
91
93
foreach (var memberInfo in type.GetMembers((onlyPublic ? BindingFlags.Public : BindingFlags.NonPublic | BindingFlags.Public) | BindingFlags.Instance | BindingFlags.Static))