This repository was archived by the owner on Mar 29, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
3 (2). 全局端信息处理
DavidMeow edited this page Jan 14, 2023
·
6 revisions
- 全局端是在程序
Global
定义域内的一个驻留
(static)内存空间, 用于在程序开始到程序结束之间一直保存某个端的信息, - 如果您
只使用一个端
进行收发
(主要是发), 不进行多端交互
, 您就可以使用全局端
- 因为当开发时, 按照
原版( <= 8.0.0 )
写法需要在每个发信的信息后面标明发信端
是谁 - 然而大部分开发者
并不使用
多个端的功能, 所以我决定精简发信的函数写法.
- 主要目的是您可以简化发送信息的函数写法
new Message[] { new Plain($"Hello") }.SendToFriend(123456, Client.c); //原写法
new Message[] { new Plain($"Hello") }.SendToFriend(123456); //现写法
//如果您需要发送到另一个端,您仍然可以在后面加上别的端的对象
new Message[] { new Plain($"Hello") }.SendToFriend(123456, Client.b1);
- 如果您只使用一个端进行收发动作, 您可以取消自己定义的
ClientX
类, 直接使用全局端 即可. - 如果您仍然使用多端交互, 但是仅用一个端发信, 那您也可以使用全局端, 使用 全局端进行发信 参照上方写法
- 如果您需要多端交互, 但是每个端发信很平均, 那您不需要更改您的代码
Global.G_Client = new Client(.....);
//依照如此定义, 您的所有发送信息位置均无需后缀端名称, 当程序检测到您留空参数时, 将会自动使用全局端.
- 注: 如果您未定义全局端留空参数, 则会抛出 异常 2000
- 正如上方描述, 您的所有发信的函数只需要将
Client
参数留空即可,或者传入Null
- 您只需要更改您原来的签名到
Global.G_Client
即可, 如下例:
//原写法
var a = new Client(....);
a.Connect();
a.OnFriendMessageRecieve += (s,e) => {
....
if(.....){
new Message[] { new Plain($"Hello") }.SendToFriend(123456, a); //←
}
....
}
....
//现写法
Global.G_Client = new Client(....); //←
Global.G_Client.Connect(); //←
Global.G_Client.OnFriendMessageRecieve += (s,e) => {
....
if(.....){
new Message[] { new Plain($"Hello") }.SendToFriend(123456); //←
}
....
}