XFEExtension
【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
关注
0
Fork
0
Star
0
返回提交历史
Modified
XFEExtension.NetCore/PermissionExtension/AdministratorPermission.cs
+1
-4
Modified
XFEExtension.NetCore/StringExtension/StringExtension.cs
+1
-9
Modified
XFEExtension.NetCore/WebExtension/LANDeviceDetector/LANDeviceDetector.cs
+1
-4
Modified
XFEExtension.NetCore/XFEChatGPT/XFEChatGPT.cs
+1
-9
Modified
XFEExtension.NetCore/XFETransform/StringConverter/FormattedJsonTransformer.cs
+9
-17
Modified
XFEExtension.NetCore/XFETransform/StringConverter/JsonTransformer.cs
+7
-15
Modified
XFEExtension.NetCore/XFETransform/StringConverter/ObjectAnalyzer.cs
+1
-9
Modified
XFEExtension.NetCore/XFETransform/XFEJsonTransformer.cs
+3
-8
Modified
XFEExtension.NetCore/XUnit/XFECode.cs
+23
-31
XFEstudio/XFEExtension
转为三元运算符
de68aea
代码差异
9 个文件
+47
-106
@@ -51,10 +51,7 @@ public static class AdministratorPermission
51
51
static AdministratorPermission()
52
52
{
53
53
var isAdmin = IsAdministrator();
54
if (isAdmin)
55
PermissionState = CurrentPermissionState.Administration;
56
else
57
PermissionState = CurrentPermissionState.Normal;
54
PermissionState = isAdmin ? CurrentPermissionState.Administration : CurrentPermissionState.Normal;
58
55
}
59
56
}
60
57
#endif
@@ -360,15 +360,7 @@ public static partial class StringExtension
360
360
/// <returns>分割后的带分割器字符串数组</returns>
361
361
public string[] SplitAndKeepDelimiter(string[] delimiter, bool removeEmptyString)
362
362
{
363
string[] result;
364
if (removeEmptyString)
365
{
366
result = str.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);
367
}
368
else
369
{
370
result = str.Split(delimiter, StringSplitOptions.None);
371
}
363
var result = str.Split(delimiter, removeEmptyString ? StringSplitOptions.RemoveEmptyEntries : StringSplitOptions.None);
372
364
for (var i = 0; i < result.Length - 1; i++)
373
365
{
374
366
result[i] += delimiter;
@@ -44,10 +44,7 @@ public class LANDeviceDetector
44
44
if(iPStart == "default")
45
45
{
46
46
var localIPAddress = WebExtension.GetLocalIPAddress();
47
if (localIPAddress is not null)
48
IPStart = $"{string.Join(".", localIPAddress.ToString().Split('.')[..3])}.*";
49
else
50
IPStart = "192.168.1.*";
47
IPStart = localIPAddress is not null ? $"{string.Join(".", localIPAddress.ToString().Split('.')[..3])}.*" : "192.168.1.*";
51
48
}
52
49
else
53
50
{
@@ -212,15 +212,7 @@ public class XFEChatGPT : XFEChatGPTBase
212
212
var receivedMessage = string.Empty;
213
213
try
214
214
{
215
string? command;
216
if (apiKeyCommand == ApiKeyCommand.GetApiKey)
217
{
218
command = "[获取]";
219
}
220
else
221
{
222
command = commandString;
223
}
215
var command = apiKeyCommand == ApiKeyCommand.GetApiKey ? "[获取]" : commandString;
224
216
ClientWebSocket webSocket = new();
225
217
webSocket.Options.SetRequestHeader("XFEPassword", password);
226
218
await webSocket.ConnectAsync(new Uri("ws://api.xfegzs.com/"), CancellationToken.None);
@@ -74,8 +74,8 @@ public class FormattedJsonTransformer : StringConverter
74
74
{
75
75
if (objectInfo.IsArray)
76
76
{
77
outPutString += objectInfo.SubObjects is not null ? $$"""
78
[{{OutPutSubObjects(objectInfo.SubObjects)}}
77
outPutString += objectInfo.SubObjects is not null ? $"""
78
[{OutPutSubObjects(objectInfo.SubObjects)}
79
79
]
80
80
""" : "null";
81
81
}
@@ -112,15 +112,7 @@ public class FormattedJsonTransformer : StringConverter
112
112
tabString += " ";
113
113
}
114
114
outString += "\n" + tabString;
115
string? currentConnectString;
116
if (i == subObjects.Count - 1)
117
{
118
currentConnectString = "";
119
}
120
else
121
{
122
currentConnectString = ",";
123
}
115
var currentConnectString = i == subObjects.Count - 1 ? "" : ",";
124
116
if (obj.IsBasicType || obj.ObjectPlace == ObjectPlace.Enum)
125
117
{
126
118
outString += obj.OutPutObject();
@@ -129,15 +121,15 @@ public class FormattedJsonTransformer : StringConverter
129
121
else
130
122
{
131
123
if (IsEnumerableClassMember(obj))
132
outString += obj.Value is not null ? $$"""
133
{{tabString}}"{{obj.Name}}": [{{OutPutObject(obj)}}
134
{{tabString}}]{{currentConnectString}}
124
outString += obj.Value is not null ? $"""
125
{tabString}"{obj.Name}": [{OutPutObject(obj)}
126
{tabString}]{currentConnectString}
135
127
""" : "null";
136
128
else if (IsEnumerableMember(obj))
137
129
if (obj.Value is not null && (obj.Type!.IsAssignableTo(typeof(IEnumerable)) || obj.Type.IsAssignableTo(typeof(Array))))
138
outString += obj.Value is not null ? $$"""
139
{{tabString}}[{{OutPutObject(obj)}}
140
{{tabString}}]{{currentConnectString}}
130
outString += obj.Value is not null ? $"""
131
{tabString}[{OutPutObject(obj)}
132
{tabString}]{currentConnectString}
141
133
""" : "null";
142
134
else
143
135
outString += obj.Value is not null ? $$"""
@@ -73,8 +73,8 @@ public class JsonTransformer : StringConverter
73
73
{
74
74
if (objectInfo.IsArray)
75
75
{
76
outPutString += objectInfo.SubObjects is not null ? $$"""
77
[{{OutPutSubObjects(objectInfo.SubObjects)}}]
76
outPutString += objectInfo.SubObjects is not null ? $"""
77
[{OutPutSubObjects(objectInfo.SubObjects)}]
78
78
""" : "null";
79
79
}
80
80
else
@@ -103,15 +103,7 @@ public class JsonTransformer : StringConverter
103
103
for (var i = 0; i < subObjects.Count; i++)
104
104
{
105
105
var obj = subObjects[i];
106
string? currentConnectString;
107
if (i == subObjects.Count - 1)
108
{
109
currentConnectString = "";
110
}
111
else
112
{
113
currentConnectString = ",";
114
}
106
var currentConnectString = i == subObjects.Count - 1 ? "" : ",";
115
107
if (obj.IsBasicType || obj.ObjectPlace == ObjectPlace.Enum)
116
108
{
117
109
outString += obj.OutPutObject();
@@ -120,13 +112,13 @@ public class JsonTransformer : StringConverter
120
112
else
121
113
{
122
114
if (IsEnumerableClassMember(obj))
123
outString += obj.Value is not null ? $$"""
124
"{{obj.Name}}": [{{OutPutObject(obj)}}]{{currentConnectString}}
115
outString += obj.Value is not null ? $"""
116
"{obj.Name}": [{OutPutObject(obj)}]{currentConnectString}
125
117
""" : "null";
126
118
else if (IsEnumerableMember(obj))
127
119
if (obj.Value is not null && (obj.Type!.IsAssignableTo(typeof(IEnumerable)) || obj.Type.IsAssignableTo(typeof(Array))))
128
outString += obj.Value is not null ? $$"""
129
[{{OutPutObject(obj)}}]{{currentConnectString}}
120
outString += obj.Value is not null ? $"""
121
[{OutPutObject(obj)}]{currentConnectString}
130
122
""" : "null";
131
123
else
132
124
outString += obj.Value is not null ? $$"""
@@ -101,15 +101,7 @@ public class ObjectAnalyzer : StringConverter
101
101
tabString += "│ ";
102
102
}
103
103
outString += tabString;
104
string? currentConnectString;
105
if (i == subObjects.Count - 1)
106
{
107
currentConnectString = "└─";
108
}
109
else
110
{
111
currentConnectString = "├─";
112
}
104
var currentConnectString = i == subObjects.Count - 1 ? "└─" : "├─";
113
105
if (obj.IsBasicType || obj.ObjectPlace == ObjectPlace.Enum)
114
106
{
115
107
outString += currentConnectString;
@@ -93,14 +93,9 @@ public static class XFEJsonTransformer
93
93
}
94
94
else
95
95
{
96
if (property.PropertyType.IsEnum)
97
{
98
jsonProperties.Add($"\"{propertyName}\":{(int)propertyValue}");
99
}
100
else
101
{
102
jsonProperties.Add($"\"{propertyName}\":{propertyValue.ConvertToJson()}");
103
}
96
jsonProperties.Add(property.PropertyType.IsEnum
97
? $"\"{propertyName}\":{(int)propertyValue}"
98
: $"\"{propertyName}\":{propertyValue.ConvertToJson()}");
104
99
}
105
100
}
106
101
@@ -103,19 +103,25 @@ public abstract class XFECode
103
103
timeCounter.Stop();
104
104
cTimeCounter++;
105
105
var elapsedTime = timeCounter.Elapsed;
106
if (autoOutPut)
107
if (elapsedTime.TotalHours >= 1)
108
Console.WriteLine($"标识名:{timerName}\t执行批次:{cTimeCounter}\t执行时间:{elapsedTime}");
109
else if (elapsedTime.TotalMinutes >= 1)
110
Console.WriteLine($"标识名:{timerName}\t执行批次:{cTimeCounter}\t执行时间: {Math.Floor(elapsedTime.TotalMinutes)} 分 {elapsedTime.Seconds} 秒");
111
else if (elapsedTime.TotalSeconds >= 1)
112
Console.WriteLine($"标识名:{timerName}\t执行批次:{cTimeCounter}\t执行时间: {elapsedTime.TotalSeconds:F3} 秒");
113
else if (elapsedTime.TotalMilliseconds >= 1)
114
Console.WriteLine($"标识名:{timerName}\t执行批次:{cTimeCounter}\t执行时间: {elapsedTime.TotalMilliseconds:F3} 毫秒");
115
else if (elapsedTime.TotalMicroseconds >= 1)
116
Console.WriteLine($"标识名:{timerName}\t执行批次:{cTimeCounter}\t执行时间: {elapsedTime.TotalMicroseconds:F3} 微秒");
117
else
118
Console.WriteLine($"标识名:{timerName}\t执行批次:{cTimeCounter}\t执行时间: {elapsedTime.TotalNanoseconds:F3} 纳秒");
106
switch (autoOutPut)
107
{
108
case true:
109
{
110
if (elapsedTime.TotalHours >= 1)
111
Console.WriteLine($"标识名:{timerName}\t执行批次:{cTimeCounter}\t执行时间:{elapsedTime}");
112
else if (elapsedTime.TotalMinutes >= 1)
113
Console.WriteLine($"标识名:{timerName}\t执行批次:{cTimeCounter}\t执行时间: {Math.Floor(elapsedTime.TotalMinutes)} 分 {elapsedTime.Seconds} 秒");
114
else if (elapsedTime.TotalSeconds >= 1)
115
Console.WriteLine($"标识名:{timerName}\t执行批次:{cTimeCounter}\t执行时间: {elapsedTime.TotalSeconds:F3} 秒");
116
else if (elapsedTime.TotalMilliseconds >= 1)
117
Console.WriteLine($"标识名:{timerName}\t执行批次:{cTimeCounter}\t执行时间: {elapsedTime.TotalMilliseconds:F3} 毫秒");
118
else if (elapsedTime.TotalMicroseconds >= 1)
119
Console.WriteLine($"标识名:{timerName}\t执行批次:{cTimeCounter}\t执行时间: {elapsedTime.TotalMicroseconds:F3} 微秒");
120
else
121
Console.WriteLine($"标识名:{timerName}\t执行批次:{cTimeCounter}\t执行时间: {elapsedTime.TotalNanoseconds:F3} 纳秒");
122
break;
123
}
124
}
119
125
return elapsedTime;
120
126
}
121
127
/// <summary>
@@ -343,10 +349,7 @@ public abstract class XFECode
343
349
catch (Exception e)
344
350
{
345
351
isSuccessful = false;
346
if (e.InnerException is not null)
347
failedMessage = e.InnerException.Message;
348
else
349
failedMessage = e.Message;
352
failedMessage = e.InnerException is not null ? e.InnerException.Message : e.Message;
350
353
}
351
354
elapsedTime = timeCounter.Elapsed - selfTimeCounter.Elapsed;
352
355
cTimeCounter++;
@@ -429,19 +432,11 @@ public abstract class XFECode
429
432
{
430
433
var isFirstMethod = true;
431
434
var failedList = new List<MethodAndCounter>();
432
object? classInstance;
433
if (classAttribute.Params is null)
434
{
435
classInstance = subClass.GetConstructor(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance, null, [], null)?.Invoke(classAttribute.Params);
436
}
437
else
438
{
439
classInstance = subClass.GetConstructor(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance, null, classAttribute.Params.GetTypes()!, null)?.Invoke(classAttribute.Params);
440
}
435
var classInstance = classAttribute.Params is null ? subClass.GetConstructor(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance, null, [], null)?.Invoke(classAttribute.Params) : subClass.GetConstructor(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance, null, classAttribute.Params.GetTypes()!, null)?.Invoke(classAttribute.Params);
441
436
var setUpAttribute = subClass.GetAttribute<SetUpAttribute>();
442
437
if (setUpAttribute is not null)
443
438
{
444
var setUpMethod = subClass.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static).Where(m => m.IsDefined(typeof(SetUpAttribute))).FirstOrDefault();
439
var setUpMethod = subClass.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static).FirstOrDefault(m => m.IsDefined(typeof(SetUpAttribute)));
445
440
setUpMethod?.Invoke(classInstance, setUpMethod.GetDefaultParameters());
446
441
}
447
442
var classOtherName = "类名:" + subClass.Name;
@@ -659,10 +654,7 @@ public abstract class XFECode
659
654
catch (Exception e)
660
655
{
661
656
isSuccessful = false;
662
if (e.InnerException is not null)
663
failedMessage = e.InnerException.Message;
664
else
665
failedMessage = e.Message;
657
failedMessage = e.InnerException is not null ? e.InnerException.Message : e.Message;
666
658
}
667
659
elapsedTime = timeCounter.Elapsed - selfTimeCounter.Elapsed;
668
660
cTimeCounter++;