XFEExtension
【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
关注
0
Fork
0
Star
0
返回提交历史
Modified
XFEExtension.NetCore.Analyzer.Test/Program.cs
+4
-1
Modified
XFEExtension.NetCore/XFETransform/ObjectInfoAnalyzer/ObjectPlace.cs
+8
-0
Added
XFEExtension.NetCore/XFETransform/StringConverter/JsonTransformer.cs
+115
-0
Modified
XFEExtension.NetCore/XFETransform/StringConverter/ObjectAnalyzer.cs
+5
-3
Modified
XFEExtension.NetCore/XFETransform/StringConverter/StringConverter.cs
+9
-1
XFEstudio/XFEExtension
添加部分Json转换注入
bfaf33a
代码差异
5 个文件
+141
-5
@@ -1,4 +1,7 @@
1
1
using XFEExtension.NetCore.StringExtension;
2
using XFEExtension.NetCore.XFETransform;
3
using XFEExtension.NetCore.XFETransform.ObjectInfoAnalyzer;
4
using XFEExtension.NetCore.XFETransform.StringConverter;
2
5
3
6
namespace XFEExtension.NetCore.Analyzer.Test;
4
7
@@ -10,6 +13,6 @@ internal class Program
10
13
{
11
14
Tags = [["123", "321"], ["1234567", "7654321"]]
12
15
};
13
testClass.X();
16
XFEConverter.GetObjectInfo(new JsonTransformer(), "Json序列化对象", ObjectPlace.Main, 0, typeof(TestClass), testClass).OutPutObject().CW();
14
17
}
15
18
}
@@ -26,10 +26,18 @@ public enum ObjectPlace
26
26
/// </summary>
27
27
List,
28
28
/// <summary>
29
/// 列表成员
30
/// </summary>
31
ListMember,
32
/// <summary>
29
33
/// 数组
30
34
/// </summary>
31
35
Array,
32
36
/// <summary>
37
/// 数组成员
38
/// </summary>
39
ArrayMember,
40
/// <summary>
33
41
/// 其他
34
42
/// </summary>
35
43
Other
@@ -0,0 +1,115 @@
1
using XFEExtension.NetCore.XFETransform.ObjectInfoAnalyzer;
2
3
namespace XFEExtension.NetCore.XFETransform.StringConverter;
4
5
/// <summary>
6
/// Json转换器
7
/// </summary>
8
public class JsonTransformer : StringConverter
9
{
10
/// <summary>
11
/// 输出Json对象信息
12
/// </summary>
13
/// <param name="objectInfo"></param>
14
/// <returns></returns>
15
public override string OutPutObject(IObjectInfo objectInfo)
16
{
17
var outPutString = string.Empty;
18
var tabString = string.Empty;
19
for (int k = 0; k < objectInfo.Layer; k++)
20
{
21
tabString += " ";
22
}
23
if (objectInfo.IsBasicType)
24
{
25
if (IsEnumerable(objectInfo))
26
{
27
if (objectInfo.Value is null)
28
{
29
outPutString += "null";
30
}
31
else
32
{
33
outPutString += objectInfo.Value;
34
}
35
}
36
else
37
{
38
if (objectInfo.Value is null)
39
{
40
outPutString += $"{tabString}\"{objectInfo.Name}\": null";
41
}
42
else
43
{
44
outPutString += $"{tabString}\"{objectInfo.Name}\": {objectInfo.Value}";
45
}
46
}
47
}
48
else
49
{
50
if (objectInfo.Layer == 0)
51
{
52
outPutString += objectInfo.SubObjects is not null ? $$"""
53
{
54
{{OutPutSubObjects(objectInfo.SubObjects)}}
55
}
56
""" : "null";
57
}
58
else
59
{
60
if (objectInfo.SubObjects is not null)
61
outPutString += OutPutSubObjects(objectInfo.SubObjects);
62
}
63
}
64
return outPutString;
65
}
66
67
internal override string OutPutSubObjects(ISubObjects subObjects)
68
{
69
var outString = string.Empty;
70
for (int i = 0; i < subObjects.Count; i++)
71
{
72
var obj = subObjects[i];
73
var tabString = string.Empty;
74
for (int k = 0; k < obj.Layer; k++)
75
{
76
tabString += " ";
77
}
78
outString += tabString;
79
string? currentConnectString;
80
if (i == subObjects.Count - 1)
81
{
82
currentConnectString = "\n";
83
}
84
else
85
{
86
currentConnectString = ",\n";
87
}
88
if (obj.IsBasicType)
89
{
90
outString += obj.OutPutObject();
91
outString += currentConnectString;
92
}
93
else
94
{
95
if (IsEnumerable(obj))
96
outString += obj is not null ? $$"""
97
[{{OutPutObject(obj)}}]{{currentConnectString}}
98
""" : "null";
99
else
100
outString += obj is not null ? $$"""
101
{{tabString}}{
102
{{tabString}}{{OutPutObject(obj)}}
103
{{tabString}}}
104
""" : "null";
105
}
106
}
107
if (outString.Length > 0 && outString[^1] == '\n')
108
{
109
outString = outString[..^1];
110
}
111
return outString;
112
}
113
114
internal bool IsEnumerable(IObjectInfo objectInfo) => objectInfo.ObjectPlace == ObjectPlace.Array || objectInfo.ObjectPlace == ObjectPlace.List || objectInfo.ObjectPlace == ObjectPlace.ArrayMember || objectInfo.ObjectPlace == ObjectPlace.ListMember;
115
}
@@ -5,14 +5,14 @@ namespace XFEExtension.NetCore.XFETransform.StringConverter;
5
5
/// <summary>
6
6
/// 对象分析类
7
7
/// </summary>
8
public class ObjectAnalyzer : IStringConverter
8
public class ObjectAnalyzer : StringConverter
9
9
{
10
10
/// <summary>
11
11
/// 分析对象
12
12
/// </summary>
13
13
/// <param name="objectInfo"></param>
14
14
/// <returns></returns>
15
public string OutPutObject(IObjectInfo objectInfo)
15
public override string OutPutObject(IObjectInfo objectInfo)
16
16
{
17
17
var outPutString = string.Empty;
18
18
if (objectInfo.IsBasicType)
@@ -47,7 +47,7 @@ public class ObjectAnalyzer : IStringConverter
47
47
return outPutString;
48
48
}
49
49
50
internal static string OutPutSubObjects(ISubObjects subObjects)
50
internal override string OutPutSubObjects(ISubObjects subObjects)
51
51
{
52
52
var outString = string.Empty;
53
53
for (int i = 0; i < subObjects.Count; i++)
@@ -97,7 +97,9 @@ public class ObjectAnalyzer : IStringConverter
97
97
ObjectPlace.Field => "[字段]",
98
98
ObjectPlace.Main => "[主体]",
99
99
ObjectPlace.Array => "[数组]",
100
ObjectPlace.ArrayMember => "[数组成员]",
100
101
ObjectPlace.List => "[列表]",
102
ObjectPlace.ListMember => "[列表成员]",
101
103
ObjectPlace.Enum => "[枚举]",
102
104
ObjectPlace.Other => "[其他]",
103
105
_ => string.Empty,
@@ -2,8 +2,16 @@
2
2
3
3
namespace XFEExtension.NetCore.XFETransform.StringConverter;
4
4
5
internal abstract class StringConverter : IStringConverter
5
/// <summary>
6
/// 字符串转换器
7
/// </summary>
8
public abstract class StringConverter : IStringConverter
6
9
{
10
/// <summary>
11
/// 输出对象信息
12
/// </summary>
13
/// <param name="objectInfo"></param>
14
/// <returns></returns>
7
15
public abstract string OutPutObject(IObjectInfo objectInfo);
8
16
internal abstract string OutPutSubObjects(ISubObjects subObjects);
9
17
}