XFEExtension
【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
关注
0
Fork
0
Star
0
返回提交历史
Modified
README.md
+107
-102
Added
README.zh-CN.md
+379
-0
Modified
XFEExtension.NetCore/XFEExtension.NetCore.csproj
+4
-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
代码差异
3 个文件
+490
-102
@@ -1,28 +1,33 @@
1
[](https://www.nuget.org/packages/XFEExtension.NetCore/)
1
[](https://www.nuget.org/packages/XFEExtension.NetCore/)
2
[](https://www.nuget.org/packages/XFEExtension.NetCore/)
3
[](https://github.com/XFEstudio/XFEExtension/blob/master/LICENSE)
4
[](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
```
@@ -0,0 +1,379 @@
1
[](https://www.nuget.org/packages/XFEExtension.NetCore/)
2
[](https://www.nuget.org/packages/XFEExtension.NetCore/)
3
[](https://github.com/XFEstudio/XFEExtension/blob/master/LICENSE)
4
[](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
```
@@ -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>