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

XFEExtension

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

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

XFEstudio/XFEExtension

docs: add English README as main doc, update Chinese README with badges and fixes

Agent-Logs-Url: https://github.com/XFEstudio/XFEExtension/sessions/94475bbe-33a2-4cb3-bb33-4f7114d33af2 Co-authored-by: XFEstudio <132526994+XFEstudio@users.noreply.github.com>

e939b29
copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
提交于

代码差异

3 个文件 +490 -102
Modified README.md +107 -102
@@ -1,28 +1,33 @@
1 [![](https://img.shields.io/nuget/dt/xfeextension.netcore?color=004880&label=Downloads&logo=NuGet)](https://www.nuget.org/packages/XFEExtension.NetCore/)
1 [![NuGet Version](https://img.shields.io/nuget/v/xfeextension.netcore?label=NuGet&logo=NuGet&color=004880)](https://www.nuget.org/packages/XFEExtension.NetCore/)
2 [![NuGet Downloads](https://img.shields.io/nuget/dt/xfeextension.netcore?color=004880&label=Downloads&logo=NuGet)](https://www.nuget.org/packages/XFEExtension.NetCore/)
3 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/XFEstudio/XFEExtension/blob/master/LICENSE)
4 [![.NET](https://img.shields.io/badge/.NET-10.0-512BD4?logo=dotnet)](https://dotnet.microsoft.com/download)
2 5
3 # XFEExtension (XFEExtension)
6 English | [简体中文](README.zh-CN.md)
4 7
5 ## 描述
8 # XFEExtension
6 9
7 XFEExtension是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
10 ## Description
8 11
9 ## 用途
12 XFEExtension is a C# DLL library designed to optimize common statements in C# code and provide more concise access patterns, rapid server/client setup, a free ChatGPT API interface, a free communication server, an XFE downloader, new formats, and more.
10 13
11 XFEExtension库适用于各种C#项目,特别适合在需要提高代码可读性的情况下使用。它包含了许多常见操作的拓展方法,使得代码编写更加高效和简便。以下是一些XFEExtension的用途示例:
14 ## Purpose
12 15
13 - **简化代码访问:** XFEExtension提供了更简洁的语法,使得代码中的访问操作更加清晰和易读。
16 The XFEExtension library is suitable for a wide variety of C# projects, especially when improving code readability is a priority. It includes extension methods for many common operations, making code writing more efficient and straightforward. Here are some examples of what XFEExtension can do:
14 17
15 - **优化性能:** 通过使用XFEExtension,您可以执行各种性能优化操作,提高应用程序的效率。
18 - **Simplify code access:** XFEExtension provides cleaner syntax, making access operations in your code clearer and more readable.
16 19
17 - **加速开发:** 通过减少样板代码,XFEExtension可以加速项目的开发过程,同时提高代码的可维护性。
20 - **Optimize performance:** With XFEExtension you can perform various performance-optimization operations to improve application efficiency.
18 21
19 # 示例(使用前记得进行相应的引用)
22 - **Accelerate development:** By reducing boilerplate code, XFEExtension speeds up project development while improving code maintainability.
23
24 # Examples (remember to add the appropriate `using` directives)
20 25
21 26 ---
22 27
23 ## 使用Json自动解析,无需创建Json对象
28 ## Automatic JSON parsing without creating a JSON object
24 29
25 #### 基础用法
30 #### Basic usage
26 31
27 32 ```csharp
28 33 using XFEExtension.NetCore.XFETransform.JsonConverter;
@@ -30,210 +35,210 @@ using XFEExtension.NetCore.XFETransform.JsonConverter;
30 35 var jsonString = """
31 36 {
32 37 "status": 500,
33 "message": "没有找到"
38 "message": "Not found"
34 39 }
35 40 """;
36 41 QueryableJsonNode jsonNode = jsonString;
37 if(jsonNode["status"] == "500")
42 if (jsonNode["status"] == "500")
38 43 {
39 44 Console.WriteLine(jsonNode["message"]);
40 45 }
41 46 ```
42 47
43 #### 查询并打包
48 #### Query and package
44 49
45 50 ```csharp
46 51 var jsonString = """
47 {"code":0,"message":"0","data":{"archives":[{"id":0,"text":"这是Json的使用教程文档","trash":"垃圾文本1"},{"id":1,"text":"在这里,你将了解JsonNode的查询方式","trash":"垃圾文本2"},{"id":2,"text":"Hello World!","trash":"垃圾文本3"}]}}
52 {"code":0,"message":"0","data":{"archives":[{"id":0,"text":"This is a JSON tutorial document","trash":"trash text 1"},{"id":1,"text":"Here you will learn how to query JsonNode","trash":"trash text 2"},{"id":2,"text":"Hello World!","trash":"trash text 3"}]}}
48 53 """;
49 var jsonNode = (QueryableJsonNode)targetJsonString;
50 var packageList = jsonNode["data"]["archives"]["package:list", "id", "text"].PackageInListObject();//打包列表
54 var jsonNode = (QueryableJsonNode)jsonString;
55 var packageList = jsonNode["data"]["archives"]["package:list", "id", "text"].PackageInListObject(); // package as list
51 56 foreach (var node in packageList)
52 57 {
53 Console.WriteLine($"ID:{node["id"]}\tDocument:{node["text"]}");//直接提取属性
58 Console.WriteLine($"ID: {node["id"]}\tDocument: {node["text"]}"); // access properties directly
54 59 }
55 60
56 var packageObject = jsonNode["package:object", "code", "message"].PackageInListObject();//打包对象
61 var packageObject = jsonNode["package:object", "code", "message"].PackageInListObject(); // package as object
57 62 foreach (var node in packageObject)
58 63 {
59 Console.WriteLine($"PropertyName:{node.Key}\tValue:{node.Value}\tValueType:{node.Value.ValueType}");//遍历属性
64 Console.WriteLine($"PropertyName: {node.Key}\tValue: {node.Value}\tValueType: {node.Value.ValueType}"); // iterate properties
60 65 }
61 66 ```
62 67
63 ## 使用LANDeviceDetector来检测本地局域网内的所有设备
68 ## Using LANDeviceDetector to detect all devices on the local network
64 69
65 #### 基础用法
70 #### Basic usage
66 71
67 72 ```csharp
68 73 var lANDeviceDetector = new LANDeviceDetector();
69 74 lANDeviceDetector.DeviceFind += (sender) =>
70 75 {
71 Console.WriteLine($"IP地址:{sender.IPAddress}\t设备名称:{sender.DeviceName}");
76 Console.WriteLine($"IP: {sender.IPAddress}\tDevice name: {sender.DeviceName}");
72 77 };
73 78 await lANDeviceDetector.StartDetecting();
74 79 ```
75 80
76 #### 自定义扫描频段
81 #### Custom scan subnet
77 82
78 83 ```csharp
79 var lANDeviceDetector = new LANDeviceDetector("100.73.121.*");//这将扫描100.73.121.1到100.73.121.255的IP地址
84 var lANDeviceDetector = new LANDeviceDetector("100.73.121.*"); // scans 100.73.121.1 – 100.73.121.255
80 85 lANDeviceDetector.DeviceFind += (sender) =>
81 86 {
82 Console.WriteLine($"IP地址:{sender.IPAddress}\t设备名称:{sender.DeviceName}");
87 Console.WriteLine($"IP: {sender.IPAddress}\tDevice name: {sender.DeviceName}");
83 88 };
84 89 await lANDeviceDetector.StartDetecting();
85 90 ```
86 91
87 #### 自定义超时
92 #### Custom timeout
88 93
89 94 ```csharp
90 var lANDeviceDetector = new LANDeviceDetector("100.73.121.*", 2000);//这将会设置超时为2000ms
95 var lANDeviceDetector = new LANDeviceDetector("100.73.121.*", 2000); // sets timeout to 2000 ms
91 96 lANDeviceDetector.DeviceFind += (sender) =>
92 97 {
93 Console.WriteLine($"IP地址:{sender.IPAddress}\t设备名称:{sender.DeviceName}");
98 Console.WriteLine($"IP: {sender.IPAddress}\tDevice name: {sender.DeviceName}");
94 99 };
95 100 await lANDeviceDetector.StartDetecting();
96 101 ```
97 102
98 103 ---
99 104
100 ## 使用X方法分析对象信息,简化调试流程
105 ## Using the X method to analyze object information and simplify debugging
101 106
102 #### 在控制台输出(仅适用于C#的控制台应用程序)
107 #### Output to console (console applications only)
103 108
104 109 ```csharp
105 var testClass = new TestClass("测试名称", "测试描述", 15);//假如这是你需要分析的某个对象
106 testClass.X();//这会将该对象的所有信息输出到控制台
110 var testClass = new TestClass("Test Name", "Test Description", 15); // the object you want to analyze
111 testClass.X(); // prints all information about the object to the console
107 112 ```
108 113
109 #### 在调试信息中输出(使用与所有类型的C#程序)
114 #### Output to trace/debug output (all C# application types)
110 115
111 116 ```csharp
112 var testClass = new TestClass("测试名称", "测试描述", 15);//假如这是你需要分析的某个对象
113 testClass.XL();//这会将该对象的所有信息输出到调试信息输出中
117 var testClass = new TestClass("Test Name", "Test Description", 15); // the object you want to analyze
118 testClass.XL(); // writes all information about the object to the debug trace output
114 119 ```
115 120
116 121 ---
117 122
118 ## XFE的ChatGPT使用示例
123 ## XFE ChatGPT usage examples
119 124
120 #### 最简单的用法
125 #### Simplest usage
121 126
122 127 ```csharp
123 //询问GPT并接收回复
124 var result = await XFEChatGPT.SendAndGetGPTResponse("你好");
128 // Ask GPT and receive a reply
129 var result = await XFEChatGPT.SendAndGetGPTResponse("Hello");
125 130 Console.WriteLine(result);
126 131 ```
127 132
128 #### 一般用法
133 #### General usage
129 134
130 135 ```csharp
131 //使用XFEChatGPT类来进行GPT的交互
132 XFEChatGPT xFEChatGPT = new XFEChatGPT("你是一个人工智能AI", true);
136 // Use XFEChatGPT for interactive GPT conversations
137 XFEChatGPT xFEChatGPT = new XFEChatGPT("You are an AI assistant", true);
133 138
134 //订阅事件
139 // Subscribe to events
135 140 xFEChatGPT.XFEChatGPTMessageReceived += (sender, e) =>
136 141 {
137 142 switch (e.GenerateState)
138 143 {
139 144 case GenerateState.Start:
140 Console.Write("【输出开始】ChatGPT:");
145 Console.Write("[Generation started] ChatGPT:");
141 146 break;
142 147 case GenerateState.Continue:
143 148 Console.Write(e.Message);
144 149 break;
145 150 case GenerateState.End:
146 Console.WriteLine("【输出完成】");
151 Console.WriteLine("[Generation complete]");
147 152 break;
148 153 case GenerateState.Error:
149 Console.WriteLine($"【发生错误】{e.Message}");
154 Console.WriteLine($"[Error] {e.Message}");
150 155 break;
151 156 default:
152 157 break;
153 158 }
154 159 };
155 160
156 //输入询问内容
161 // Read the user's question
157 162 var askContent = Console.ReadLine();
158 163
159 //发送生成随机ID并询问内容
164 // Send with a random message ID
160 165 xFEChatGPT.SendGPTMessage(Guid.NewGuid().ToString(), askContent);
161 166 ```
162 167
163 #### 推荐用法
168 #### Recommended usage
164 169
165 170 ```csharp
166 //创建有记忆功能的XFEChatGPT对象
171 // Create a MemorableXFEChatGPT object with conversation memory
167 172 MemorableXFEChatGPT memorableXFEChatGPT = new MemorableXFEChatGPT();
168 173
169 //创建一个新的对话并设置System内容
170 memorableXFEChatGPT.CreateDialog("新的对话ID", "你是一个由寰宇朽力网络科技开发的人工智能AI", true, true);
174 // Create a new dialog and set the system message
175 memorableXFEChatGPT.CreateDialog("dialog-id", "You are an AI assistant developed by XFEstudio", true, true);
171 176
172 //订阅消息接收事件
177 // Subscribe to the message-received event
173 178 memorableXFEChatGPT.XFEChatGPTMessageReceived += (sender, e) =>
174 179 {
175 180 switch (e.GenerateState)
176 181 {
177 182 case GenerateState.Start:
178 Console.Write("【输出开始】ChatGPT:");
183 Console.Write("[Generation started] ChatGPT:");
179 184 break;
180 185 case GenerateState.Continue:
181 186 Console.Write(e.Message);
182 187 break;
183 188 case GenerateState.End:
184 Console.WriteLine("【输出完成】");
189 Console.WriteLine("[Generation complete]");
185 190 break;
186 191 case GenerateState.Error:
187 Console.WriteLine($"【发生错误】{e.Message}");
192 Console.WriteLine($"[Error] {e.Message}");
188 193 break;
189 194 default:
190 195 break;
191 196 }
192 197 };
193 198
194 //读取询问内容
199 // Read the user's question
195 200 var askContent = Console.ReadLine();
196 201
197 //填写之前创建的对话ID,生成随机的消息ID,并输入刚刚读取的询问内容
198 memorableXFEChatGPT.AskChatGPT("新的对话ID", Guid.NewGuid().ToString(), askContent);
202 // Send using the dialog ID created above, a random message ID, and the question
203 memorableXFEChatGPT.AskChatGPT("dialog-id", Guid.NewGuid().ToString(), askContent);
199 204 ```
200 205
201 206 ---
202 207
203 ## IO流拓展操作示例
208 ## IO stream extension examples
204 209
205 210 ```csharp
206 // 使用XFEExtension来简化文件读取/写入操作
211 // Simplify file read/write operations with XFEExtension
207 212 "Hello World!".WriteIn("test.txt");
208 213 string txt = "test.txt".ReadOut();
209 214 ```
210 215
211 216 ---
212 217
213 ## XEA加密算法示例
218 ## XEA encryption algorithm example
214 219
215 220 ```csharp
216 // 使用XFEExtension来进行加密操作
217 string text = "这是一段将要加密的文本";
218 $"未加密内容:{text}".CW();
219 string password = "这是一个秘钥";
220 string encrypt = text.XEAEncrypt(password);//加密
221 Console.WriteLine("加密内容:" + encrypt);
222 Console.WriteLine("解密内容:" + encrypt.XEADecrypt(password));//解密
221 // Encrypt and decrypt text using XFEExtension
222 string text = "This is text that will be encrypted";
223 $"Plain text: {text}".CW();
224 string password = "my-secret-key";
225 string encrypt = text.XEAEncrypt(password); // encrypt
226 Console.WriteLine("Encrypted: " + encrypt);
227 Console.WriteLine("Decrypted: " + encrypt.XEADecrypt(password)); // decrypt
223 228 ```
224 229
225 230 ---
226 231
227 ## 特性操作示例
232 ## Attribute access example
228 233
229 234 ```csharp
230 // 使用XFEExtension来简化特性读取操作
235 // Simplify attribute reading with XFEExtension
231 236 string str = testObject.GetAttribute<string>();
232 237 ```
233 238
234 239 ---
235 240
236 ## 使用XUnit测试框架
241 ## Using the XUnit testing framework
237 242
238 243 ```csharp
239 244 [CTest]
@@ -242,7 +247,7 @@ class TestClass : XFECode
242 247 [MTest]
243 248 void Test()
244 249 {
245 Assert(true, "断言内容");
250 Assert(true, "assertion content");
246 251 }
247 252 }
248 253 public class Program : XFECode
@@ -256,7 +261,7 @@ public class Program : XFECode
256 261
257 262 ---
258 263
259 ## 快速搭建网络通讯服务器
264 ## Quickly set up a network communication server
260 265
261 266 ```csharp
262 267 public class CustomServer
@@ -273,30 +278,30 @@ public class CustomServer
273 278
274 279 private void CyberCommServer_MessageReceived(object? sender, CyberCommServerEventArgs e)
275 280 {
276 e.ReplyMessage("服务器已接收消息");
277 Console.WriteLine($"收到客户端[{e.IPAddress}]消息:{e.TextMessage}");//明文传输实例
281 e.ReplyMessage("Server received your message");
282 Console.WriteLine($"Message from client [{e.IPAddress}]: {e.TextMessage}"); // plain-text example
278 283 }
279 284
280 285 private void CyberCommServer_ClientConnected(object? sender, CyberCommServerEventArgs e)
281 286 {
282 Console.WriteLine($"新客户端连接:{e.IPAddress}");
287 Console.WriteLine($"New client connected: {e.IPAddress}");
283 288 }
284 289
285 290 private void CyberCommServer_ConnectionClosed(object? sender, CyberCommServerEventArgs e)
286 291 {
287 Console.WriteLine($"客户端[{e.IPAddress}]断开连接");
292 Console.WriteLine($"Client [{e.IPAddress}] disconnected");
288 293 }
289 294
290 295 private void CyberCommServer_ServerStarted(object? sender, EventArgs e)
291 296 {
292 Console.WriteLine("服务器已启动");
297 Console.WriteLine("Server started");
293 298 }
294 299 }
295 300 ```
296 301
297 302 ---
298 303
299 ## 快速搭建网络通讯客户端
304 ## Quickly set up a network communication client
300 305
301 306 ```csharp
302 307 public class CustomClient
@@ -312,63 +317,63 @@ public class CustomClient
312 317
313 318 private void CyberCommClient_MessageReceived(object? sender, CyberCommClientEventArgs e)
314 319 {
315 Console.WriteLine($"收到消息:{e.TextMessage}");//接收明文消息
316 //此处可以进行消息回复
317 //e.ReplyMessage();
320 Console.WriteLine($"Message received: {e.TextMessage}"); // receive plain-text message
321 // reply here if needed:
322 // e.ReplyMessage();
318 323 }
319 324
320 325 private void CyberCommClient_ConnectionClosed(object? sender, EventArgs e)
321 326 {
322 Console.WriteLine("与服务器断开连接");
327 Console.WriteLine("Disconnected from server");
323 328 }
324 329
325 330 private void CyberCommClient_Connected(object? sender, EventArgs e)
326 331 {
327 Console.WriteLine("已连接到服务器");
328 CyberCommClient.SendTextMessage("这是一条测试消息");//以明文消息为示例
332 Console.WriteLine("Connected to server");
333 CyberCommClient.SendTextMessage("This is a test message"); // plain-text example
329 334 }
330 335 }
331 336 ```
332 337
333 338 ---
334 339
335 ## 使用XCC网络通讯API接口快速搭建聊天室
340 ## Build a chat room quickly using the XCC network communication API
336 341
337 342 ```csharp
338 XCCNetWork xCCNetWork = new();//创建XCC网络通讯基础
339 var group = xCCNetWork.CreateGroup("测试群组", "测试人员");//创建网络通讯中的群组,输入群组名,群内名称
340 #region 订阅事件
343 XCCNetWork xCCNetWork = new(); // create XCC network base
344 var group = xCCNetWork.CreateGroup("Test Group", "Member Name"); // create a group, provide group name and member name
345 #region Subscribe to events
341 346 xCCNetWork.Connected += (sender, e) =>
342 347 {
343 Console.WriteLine($"群组:{e.Group.GroupId}\t连接成功");
344 group.SendTextMessage("测试消息");
348 Console.WriteLine($"Group: {e.Group.GroupId}\tConnected");
349 group.SendTextMessage("Test message");
345 350 };
346 351 xCCNetWork.ConnectionClosed += (sender, e) =>
347 352 {
348 Console.WriteLine($"群组:{e.Group.GroupId}\t断开连接");
353 Console.WriteLine($"Group: {e.Group.GroupId}\tDisconnected");
349 354 };
350 355 xCCNetWork.TextMessageReceived += (sender, e) =>
351 356 {
352 Console.WriteLine($"群组:{e.Group.GroupId}\t收到文本消息:{e.TextMessage}");
357 Console.WriteLine($"Group: {e.Group.GroupId}\tText message received: {e.TextMessage}");
353 358 };
354 359 #endregion
355 await group.StartXCC();//启动该群组的网络通讯
360 await group.StartXCC(); // start the group's network communication
356 361 ```
357 362
358 363 ---
359 364
360 ## 使用XFE下载器来加速下载文件(支持继续上次下载、多线程加速下载等操作)
365 ## Use XFEDownloader to accelerate file downloads (supports resuming and multi-threaded acceleration)
361 366
362 367 ```csharp
363 368 XFEDownloader xFEDownloader = new()
364 369 {
365 DownloadUrl = "https://www.nuget.org/api/v2/package/XFE%E5%90%84%E7%B1%BB%E6%8B%93%E5%B1%95.NetCore/1.2.2",
366 SavePath = "XFEExtension.NetCore.nuget",
367 FileSegmentCount = 9 //设置9个线程来加速下载,建议数量不超过15个
370 DownloadUrl = "https://www.nuget.org/api/v2/package/XFEExtension.NetCore/4.1.0",
371 SavePath = "XFEExtension.NetCore.nupkg",
372 FileSegmentCount = 9 // use 9 threads to accelerate the download (recommended: no more than 15)
368 373 };
369 374 xFEDownloader.BufferDownloaded += (sender, e) =>
370 375 {
371 Console.WriteLine($"进度:{e.DownloadedBufferSize.FileSize()}/{e.TotalBufferSize?.FileSize()}");
376 Console.WriteLine($"Progress: {e.DownloadedBufferSize.FileSize()}/{e.TotalBufferSize?.FileSize()}");
372 377 };
373 378 await xFEDownloader.Download();
374 379 ```
Added README.zh-CN.md +379 -0
@@ -0,0 +1,379 @@
1 [![NuGet Version](https://img.shields.io/nuget/v/xfeextension.netcore?label=NuGet&logo=NuGet&color=004880)](https://www.nuget.org/packages/XFEExtension.NetCore/)
2 [![NuGet Downloads](https://img.shields.io/nuget/dt/xfeextension.netcore?color=004880&label=下载量&logo=NuGet)](https://www.nuget.org/packages/XFEExtension.NetCore/)
3 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/XFEstudio/XFEExtension/blob/master/LICENSE)
4 [![.NET](https://img.shields.io/badge/.NET-10.0-512BD4?logo=dotnet)](https://dotnet.microsoft.com/download)
5
6 [English](README.md) | 简体中文
7
8 # XFEExtension
9
10 ## 描述
11
12 XFEExtension是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
13
14 ## 用途
15
16 XFEExtension库适用于各种C#项目,特别适合在需要提高代码可读性的情况下使用。它包含了许多常见操作的拓展方法,使得代码编写更加高效和简便。以下是一些XFEExtension的用途示例:
17
18 - **简化代码访问:** XFEExtension提供了更简洁的语法,使得代码中的访问操作更加清晰和易读。
19
20 - **优化性能:** 通过使用XFEExtension,您可以执行各种性能优化操作,提高应用程序的效率。
21
22 - **加速开发:** 通过减少样板代码,XFEExtension可以加速项目的开发过程,同时提高代码的可维护性。
23
24 # 示例(使用前记得进行相应的引用)
25
26 ---
27
28 ## 使用Json自动解析,无需创建Json对象
29
30 #### 基础用法
31
32 ```csharp
33 using XFEExtension.NetCore.XFETransform.JsonConverter;
34
35 var jsonString = """
36 {
37 "status": 500,
38 "message": "没有找到"
39 }
40 """;
41 QueryableJsonNode jsonNode = jsonString;
42 if(jsonNode["status"] == "500")
43 {
44 Console.WriteLine(jsonNode["message"]);
45 }
46 ```
47
48 #### 查询并打包
49
50 ```csharp
51 var jsonString = """
52 {"code":0,"message":"0","data":{"archives":[{"id":0,"text":"这是Json的使用教程文档","trash":"垃圾文本1"},{"id":1,"text":"在这里,你将了解JsonNode的查询方式","trash":"垃圾文本2"},{"id":2,"text":"Hello World!","trash":"垃圾文本3"}]}}
53 """;
54 var jsonNode = (QueryableJsonNode)jsonString;
55 var packageList = jsonNode["data"]["archives"]["package:list", "id", "text"].PackageInListObject();//打包列表
56 foreach (var node in packageList)
57 {
58 Console.WriteLine($"ID:{node["id"]}\tDocument:{node["text"]}");//直接提取属性
59 }
60
61 var packageObject = jsonNode["package:object", "code", "message"].PackageInListObject();//打包对象
62 foreach (var node in packageObject)
63 {
64 Console.WriteLine($"PropertyName:{node.Key}\tValue:{node.Value}\tValueType:{node.Value.ValueType}");//遍历属性
65 }
66 ```
67
68 ## 使用LANDeviceDetector来检测本地局域网内的所有设备
69
70 #### 基础用法
71
72 ```csharp
73 var lANDeviceDetector = new LANDeviceDetector();
74 lANDeviceDetector.DeviceFind += (sender) =>
75 {
76 Console.WriteLine($"IP地址:{sender.IPAddress}\t设备名称:{sender.DeviceName}");
77 };
78 await lANDeviceDetector.StartDetecting();
79 ```
80
81 #### 自定义扫描频段
82
83 ```csharp
84 var lANDeviceDetector = new LANDeviceDetector("100.73.121.*");//这将扫描100.73.121.1到100.73.121.255的IP地址
85 lANDeviceDetector.DeviceFind += (sender) =>
86 {
87 Console.WriteLine($"IP地址:{sender.IPAddress}\t设备名称:{sender.DeviceName}");
88 };
89 await lANDeviceDetector.StartDetecting();
90 ```
91
92 #### 自定义超时
93
94 ```csharp
95 var lANDeviceDetector = new LANDeviceDetector("100.73.121.*", 2000);//这将会设置超时为2000ms
96 lANDeviceDetector.DeviceFind += (sender) =>
97 {
98 Console.WriteLine($"IP地址:{sender.IPAddress}\t设备名称:{sender.DeviceName}");
99 };
100 await lANDeviceDetector.StartDetecting();
101 ```
102
103 ---
104
105 ## 使用X方法分析对象信息,简化调试流程
106
107 #### 在控制台输出(仅适用于C#的控制台应用程序)
108
109 ```csharp
110 var testClass = new TestClass("测试名称", "测试描述", 15);//假如这是你需要分析的某个对象
111 testClass.X();//这会将该对象的所有信息输出到控制台
112 ```
113
114 #### 在调试信息中输出(使用于所有类型的C#程序)
115
116 ```csharp
117 var testClass = new TestClass("测试名称", "测试描述", 15);//假如这是你需要分析的某个对象
118 testClass.XL();//这会将该对象的所有信息输出到调试信息输出中
119 ```
120
121 ---
122
123 ## XFE的ChatGPT使用示例
124
125 #### 最简单的用法
126
127 ```csharp
128 //询问GPT并接收回复
129 var result = await XFEChatGPT.SendAndGetGPTResponse("你好");
130 Console.WriteLine(result);
131 ```
132
133 #### 一般用法
134
135 ```csharp
136 //使用XFEChatGPT类来进行GPT的交互
137 XFEChatGPT xFEChatGPT = new XFEChatGPT("你是一个人工智能AI", true);
138
139 //订阅事件
140 xFEChatGPT.XFEChatGPTMessageReceived += (sender, e) =>
141 {
142 switch (e.GenerateState)
143 {
144 case GenerateState.Start:
145 Console.Write("【输出开始】ChatGPT:");
146 break;
147 case GenerateState.Continue:
148 Console.Write(e.Message);
149 break;
150 case GenerateState.End:
151 Console.WriteLine("【输出完成】");
152 break;
153 case GenerateState.Error:
154 Console.WriteLine($"【发生错误】{e.Message}");
155 break;
156 default:
157 break;
158 }
159 };
160
161 //输入询问内容
162 var askContent = Console.ReadLine();
163
164 //发送生成随机ID并询问内容
165 xFEChatGPT.SendGPTMessage(Guid.NewGuid().ToString(), askContent);
166 ```
167
168 #### 推荐用法
169
170 ```csharp
171 //创建有记忆功能的XFEChatGPT对象
172 MemorableXFEChatGPT memorableXFEChatGPT = new MemorableXFEChatGPT();
173
174 //创建一个新的对话并设置System内容
175 memorableXFEChatGPT.CreateDialog("新的对话ID", "你是一个由寰宇朽力网络科技开发的人工智能AI", true, true);
176
177 //订阅消息接收事件
178 memorableXFEChatGPT.XFEChatGPTMessageReceived += (sender, e) =>
179 {
180 switch (e.GenerateState)
181 {
182 case GenerateState.Start:
183 Console.Write("【输出开始】ChatGPT:");
184 break;
185 case GenerateState.Continue:
186 Console.Write(e.Message);
187 break;
188 case GenerateState.End:
189 Console.WriteLine("【输出完成】");
190 break;
191 case GenerateState.Error:
192 Console.WriteLine($"【发生错误】{e.Message}");
193 break;
194 default:
195 break;
196 }
197 };
198
199 //读取询问内容
200 var askContent = Console.ReadLine();
201
202 //填写之前创建的对话ID,生成随机的消息ID,并输入刚刚读取的询问内容
203 memorableXFEChatGPT.AskChatGPT("新的对话ID", Guid.NewGuid().ToString(), askContent);
204 ```
205
206 ---
207
208 ## IO流拓展操作示例
209
210 ```csharp
211 // 使用XFEExtension来简化文件读取/写入操作
212 "Hello World!".WriteIn("test.txt");
213 string txt = "test.txt".ReadOut();
214 ```
215
216 ---
217
218 ## XEA加密算法示例
219
220 ```csharp
221 // 使用XFEExtension来进行加密操作
222 string text = "这是一段将要加密的文本";
223 $"未加密内容:{text}".CW();
224 string password = "这是一个秘钥";
225 string encrypt = text.XEAEncrypt(password);//加密
226 Console.WriteLine("加密内容:" + encrypt);
227 Console.WriteLine("解密内容:" + encrypt.XEADecrypt(password));//解密
228 ```
229
230 ---
231
232 ## 特性操作示例
233
234 ```csharp
235 // 使用XFEExtension来简化特性读取操作
236 string str = testObject.GetAttribute<string>();
237 ```
238
239 ---
240
241 ## 使用XUnit测试框架
242
243 ```csharp
244 [CTest]
245 class TestClass : XFECode
246 {
247 [MTest]
248 void Test()
249 {
250 Assert(true, "断言内容");
251 }
252 }
253 public class Program : XFECode
254 {
255 public static void Main(string[] args)
256 {
257 Pause();
258 }
259 }
260 ```
261
262 ---
263
264 ## 快速搭建网络通讯服务器
265
266 ```csharp
267 public class CustomServer
268 {
269 CyberCommServer CyberCommServer { get; } = new("http://127.0.0.1:19019/");
270 public async Task StartServer()
271 {
272 CyberCommServer.ServerStarted += CyberCommServer_ServerStarted;
273 CyberCommServer.ConnectionClosed += CyberCommServer_ConnectionClosed;
274 CyberCommServer.ClientConnected += CyberCommServer_ClientConnected;
275 CyberCommServer.MessageReceived += CyberCommServer_MessageReceived;
276 await CyberCommServer.StartCyberCommServer();
277 }
278
279 private void CyberCommServer_MessageReceived(object? sender, CyberCommServerEventArgs e)
280 {
281 e.ReplyMessage("服务器已接收消息");
282 Console.WriteLine($"收到客户端[{e.IPAddress}]消息:{e.TextMessage}");//明文传输实例
283 }
284
285 private void CyberCommServer_ClientConnected(object? sender, CyberCommServerEventArgs e)
286 {
287 Console.WriteLine($"新客户端连接:{e.IPAddress}");
288 }
289
290 private void CyberCommServer_ConnectionClosed(object? sender, CyberCommServerEventArgs e)
291 {
292 Console.WriteLine($"客户端[{e.IPAddress}]断开连接");
293 }
294
295 private void CyberCommServer_ServerStarted(object? sender, EventArgs e)
296 {
297 Console.WriteLine("服务器已启动");
298 }
299 }
300 ```
301
302 ---
303
304 ## 快速搭建网络通讯客户端
305
306 ```csharp
307 public class CustomClient
308 {
309 CyberCommClient CyberCommClient { get; } = new("http://127.0.0.1:19019/");
310 public async Task StartClient()
311 {
312 CyberCommClient.Connected += CyberCommClient_Connected;
313 CyberCommClient.ConnectionClosed += CyberCommClient_ConnectionClosed;
314 CyberCommClient.MessageReceived += CyberCommClient_MessageReceived;
315 await CyberCommClient.StartCyberCommClient();
316 }
317
318 private void CyberCommClient_MessageReceived(object? sender, CyberCommClientEventArgs e)
319 {
320 Console.WriteLine($"收到消息:{e.TextMessage}");//接收明文消息
321 //此处可以进行消息回复
322 //e.ReplyMessage();
323 }
324
325 private void CyberCommClient_ConnectionClosed(object? sender, EventArgs e)
326 {
327 Console.WriteLine("与服务器断开连接");
328 }
329
330 private void CyberCommClient_Connected(object? sender, EventArgs e)
331 {
332 Console.WriteLine("已连接到服务器");
333 CyberCommClient.SendTextMessage("这是一条测试消息");//以明文消息为示例
334 }
335 }
336 ```
337
338 ---
339
340 ## 使用XCC网络通讯API接口快速搭建聊天室
341
342 ```csharp
343 XCCNetWork xCCNetWork = new();//创建XCC网络通讯基础
344 var group = xCCNetWork.CreateGroup("测试群组", "测试人员");//创建网络通讯中的群组,输入群组名,群内名称
345 #region 订阅事件
346 xCCNetWork.Connected += (sender, e) =>
347 {
348 Console.WriteLine($"群组:{e.Group.GroupId}\t连接成功");
349 group.SendTextMessage("测试消息");
350 };
351 xCCNetWork.ConnectionClosed += (sender, e) =>
352 {
353 Console.WriteLine($"群组:{e.Group.GroupId}\t断开连接");
354 };
355 xCCNetWork.TextMessageReceived += (sender, e) =>
356 {
357 Console.WriteLine($"群组:{e.Group.GroupId}\t收到文本消息:{e.TextMessage}");
358 };
359 #endregion
360 await group.StartXCC();//启动该群组的网络通讯
361 ```
362
363 ---
364
365 ## 使用XFE下载器来加速下载文件(支持继续上次下载、多线程加速下载等操作)
366
367 ```csharp
368 XFEDownloader xFEDownloader = new()
369 {
370 DownloadUrl = "https://www.nuget.org/api/v2/package/XFE%E5%90%84%E7%B1%BB%E6%8B%93%E5%B1%95.NetCore/1.2.2",
371 SavePath = "XFEExtension.NetCore.nuget",
372 FileSegmentCount = 9 //设置9个线程来加速下载,建议数量不超过15个
373 };
374 xFEDownloader.BufferDownloaded += (sender, e) =>
375 {
376 Console.WriteLine($"进度:{e.DownloadedBufferSize.FileSize()}/{e.TotalBufferSize?.FileSize()}");
377 };
378 await xFEDownloader.Download();
379 ```
Modified XFEExtension.NetCore/XFEExtension.NetCore.csproj +4 -0
@@ -58,6 +58,10 @@
58 58 <Pack>True</Pack>
59 59 <PackagePath>\</PackagePath>
60 60 </None>
61 <None Include="..\README.zh-CN.md">
62 <Pack>True</Pack>
63 <PackagePath>\</PackagePath>
64 </None>
61 65 <None Include="..\XFEstudio.pfx">
62 66 <Pack>True</Pack>
63 67 <PackagePath>\</PackagePath>