XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension

【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension

完善细分判断

b1be5d7
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

3 个文件 +30 -11
Modified XFEExtension.NetCore.Analyzer.Test/Program.cs +1 -6
@@ -1,8 +1,4 @@
1 using XFEExtension.NetCore.StringExtension;
2 using XFEExtension.NetCore.XFETransform;
3 using XFEExtension.NetCore.XFETransform.ObjectInfoAnalyzer;
4
5 namespace XFEExtension.NetCore.Analyzer.Test;
1 namespace XFEExtension.NetCore.Analyzer.Test;
6 2
7 3 internal class Program
8 4 {
@@ -12,6 +8,5 @@ internal class Program
12 8 {
13 9 Tags = [["123", "321"], ["1234567", "7654321"]]
14 10 };
15 XFEConverter.GetObjectInfo(new JsonTransformer(), "Json序列化对象", ObjectPlace.Main, 0, typeof(TestClass), testClass).OutPutObject().CW();
16 11 }
17 12 }
Modified XFEExtension.NetCore/XFETransform/StringConverter/JsonTransformer.cs +1 -1
@@ -111,5 +111,5 @@ internal class JsonTransformer : StringConverter
111 111 return outString;
112 112 }
113 113
114 internal bool IsEnumerable(IObjectInfo objectInfo) => objectInfo.ObjectPlace == ObjectPlace.Array || objectInfo.ObjectPlace == ObjectPlace.List || objectInfo.ObjectPlace == ObjectPlace.ArrayMember || objectInfo.ObjectPlace == ObjectPlace.ListMember;
114 internal static bool IsEnumerable(IObjectInfo objectInfo) => objectInfo.ObjectPlace == ObjectPlace.Array || objectInfo.ObjectPlace == ObjectPlace.List || objectInfo.ObjectPlace == ObjectPlace.ArrayMember || objectInfo.ObjectPlace == ObjectPlace.ListMember;
115 115 }
Modified XFEExtension.NetCore/XFETransform/XFEConverter.cs +28 -4
@@ -109,21 +109,45 @@ public class XFEConverter
109 109 var subObjects = new List<IObjectInfo>();
110 110 foreach (var memberInfo in type.GetMembers((onlyPublic ? BindingFlags.Public : BindingFlags.NonPublic | BindingFlags.Public) | BindingFlags.Instance | BindingFlags.Static))
111 111 {
112 ObjectPlace currentObjectPlace;
112 113 if (memberInfo is PropertyInfo propertyInfo)
113 114 {
115 if (propertyInfo.PropertyType.IsAssignableTo(typeof(Array)))
116 currentObjectPlace = ObjectPlace.ArrayProperty;
117 else if (propertyInfo.PropertyType.IsAssignableTo(typeof(IEnumerable)))
118 currentObjectPlace = ObjectPlace.ListProperty;
119 else if (propertyInfo.PropertyType.IsAssignableTo(typeof(Enum)))
120 currentObjectPlace = ObjectPlace.EnumProperty;
121 else
122 currentObjectPlace = ObjectPlace.NormalProperty;
114 123 try
115 124 {
116 subObjects.Add(GetObjectInfo(stringConverter, propertyInfo.Name, ObjectPlace.NormalProperty, layer + 1, propertyInfo.PropertyType, propertyInfo.GetValue(value), onlyProperty, onlyPublic));
125 subObjects.Add(GetObjectInfo(stringConverter, propertyInfo.Name, currentObjectPlace, layer + 1, propertyInfo.PropertyType, propertyInfo.GetValue(value), onlyProperty, onlyPublic));
117 126 }
118 127 catch (Exception ex)
119 128 {
120 subObjects.Add(GetObjectInfo(stringConverter, propertyInfo.Name, ObjectPlace.NormalProperty, layer + 1, propertyInfo.PropertyType, $"[获取失败:{ex.Message}]", onlyProperty, onlyPublic));
129 subObjects.Add(GetObjectInfo(stringConverter, propertyInfo.Name, currentObjectPlace, layer + 1, propertyInfo.PropertyType, $"[获取失败:{ex.Message}]", onlyProperty, onlyPublic));
121 130 }
122 131 continue;
123 132 }
124 if (!onlyProperty && memberInfo is FieldInfo field)
133 if (!onlyProperty && memberInfo is FieldInfo fieldInfo)
125 134 {
126 subObjects.Add(GetObjectInfo(stringConverter, field.Name, ObjectPlace.Field, layer + 1, field.FieldType, field.GetValue(value), onlyProperty, onlyPublic));
135 if (fieldInfo.FieldType.IsAssignableTo(typeof(Array)))
136 currentObjectPlace = ObjectPlace.ArrayProperty;
137 else if (fieldInfo.FieldType.IsAssignableTo(typeof(IEnumerable)))
138 currentObjectPlace = ObjectPlace.ListProperty;
139 else if (fieldInfo.FieldType.IsAssignableTo(typeof(Enum)))
140 currentObjectPlace = ObjectPlace.EnumProperty;
141 else
142 currentObjectPlace = ObjectPlace.NormalProperty;
143 try
144 {
145 subObjects.Add(GetObjectInfo(stringConverter, fieldInfo.Name, currentObjectPlace, layer + 1, fieldInfo.FieldType, fieldInfo.GetValue(value), onlyProperty, onlyPublic));
146 }
147 catch (Exception ex)
148 {
149 subObjects.Add(GetObjectInfo(stringConverter, fieldInfo.Name, currentObjectPlace, layer + 1, fieldInfo.FieldType, $"[获取失败:{ex.Message}]", onlyProperty, onlyPublic));
150 }
127 151 }
128 152 }
129 153 return new ObjectInfoImpl(stringConverter, name, objectPlace, layer, type, false, false, value, subObjects);