更新说明,修复文本包裹器中size没有正确结束的问题
This commit is contained in:
78
README.md
78
README.md
@@ -1,4 +1,6 @@
|
||||
# Deconstruction
|
||||
<h2 align="center">Deconstruction</h2>
|
||||
|
||||
<a href="https://gitee.com/none_9_0/xeric-library2"> 发布页面</a>
|
||||
|
||||
## 简介
|
||||
|
||||
@@ -150,7 +152,9 @@ XericLibrary 部分由两个dll组成,一个是 Xeric Library,另一个是 X
|
||||
#### 曲线宏
|
||||
#### 枚举宏
|
||||
|
||||
枚举宏包含一个缓存封装器,
|
||||
枚举宏包含一个缓存封装器,可以通过<code>MacroEnum\<enum\></code>来定义。
|
||||
定义枚举结构封装将允许像列表一样访问这个枚举,或将枚举实例赋予,通过枚举封装器来操作枚举值。
|
||||
在新版中,枚举封装器可以使用单例写法访问,而不再需要手动声名保存实例了。
|
||||
|
||||
#### 方程宏
|
||||
#### 事件宏
|
||||
@@ -159,6 +163,53 @@ XericLibrary 部分由两个dll组成,一个是 Xeric Library,另一个是 X
|
||||
#### 按键宏
|
||||
#### 集合宏
|
||||
#### 数学宏
|
||||
#### 消息库
|
||||
|
||||
预设一些消息处理流程。
|
||||
|
||||
* 全局业务分发器,消息入口Entry。
|
||||
|
||||
特点是需要通过指定消息入口(<code>RedirectReceiverMessage</code>)和出口(<code>RedirectReceiver</code>)来中转消息。
|
||||
完成后消息发送时会被进行一次包装,将带有入口名称的内容一同发送;而在消息处理的另一端,也需要用相同的逻辑处理这个包,就能获得这个包来自哪,并自动定位到对应的预定义委托上进行处理。
|
||||
下面是一个接收示例:
|
||||
```
|
||||
// 声名一个消息处理器委托
|
||||
// 接收器形参可以是任何可以序列化的结构,或是无形参接收器。
|
||||
public MacroMessage.ReceiverObject<int> myFunc;
|
||||
public void Awake()
|
||||
{
|
||||
// 初始化函数中注册这个委托,并赋予一个名称用于标识
|
||||
myFunc.RedirectReceiver(nameof(myFunc));
|
||||
myFunc += Func;
|
||||
}
|
||||
// 处理消息
|
||||
public void Func(int number)
|
||||
{
|
||||
// 消息处理
|
||||
}
|
||||
```
|
||||
下面是一个发送示例:
|
||||
```
|
||||
// 在收到文本消息后,立刻发送给重定向器
|
||||
void OnMessage(string message)
|
||||
{
|
||||
MacroMessage.RedirectReceiverMessage(message);
|
||||
}
|
||||
```
|
||||
最后,需要定义何时处理消息:
|
||||
```
|
||||
// 比如放在帧更新事件中,消息会作为队列加入,然后逐个处理。
|
||||
void Update()
|
||||
{
|
||||
MacroMessage.MainThreadProcessingMessage();
|
||||
}
|
||||
```
|
||||
|
||||
* 方法封装器
|
||||
提供一个方法软引用封装器,首先需要将一个可执行流程转换为<code>CallableTarget</code>对象。然后通过<code>AddCallableFunction</code>添加到全局字典中,随后可以通过<code>TryEvocation</code>或者<code>Evocation</code>调用。
|
||||
方法封装器默认可以搜索所有静态,实例,私有,公共的方法
|
||||
|
||||
|
||||
#### 对象宏
|
||||
#### PID宏
|
||||
#### 对象池宏
|
||||
@@ -175,7 +226,8 @@ XericLibrary 部分由两个dll组成,一个是 Xeric Library,另一个是 X
|
||||
#### 平滑宏
|
||||
#### 排序宏
|
||||
|
||||
c#自带的排序很好用,但是选择何种排序模式是自动进行的,排序宏中提供了可以手动选择的排序算法。
|
||||
c#自带的排序很好用,但是选择何种排序模式是根据数据类型自动切换的。
|
||||
在这里,排序宏中提供了一些可以手动选择的排序算法。
|
||||
注:没有猴子排序。
|
||||
|
||||
#### 文本宏
|
||||
@@ -195,6 +247,24 @@ c#自带的排序很好用,但是选择何种排序模式是自动进行的,
|
||||
TextBlockBuilder 是所有blocker的基类,使用它包裹所有文本将起到单纯拼接文本的作用;TextBlockBuilder 里的三个block的作用是使用相应的富文本标签包裹,根据标签的类型,包裹器会自动决定标签格式。
|
||||
<code>DelegateBlock</code>的作用是通过委托来实时获取一个变量,示例中直接获取value的文本值,拼接到结果中。
|
||||
TextBlockBuilder 可以不依靠如<code>DelegateBlock</code>这样的包裹器,可以直接将返回字符串类型的方法委托传入,blocker 会自动识别;前提是开启对应 blocker 里的<code>compatibility</code>兼容性检查,但这会带来额外的性能开销,如果没有特别的需求,建议还是使用<code>DelegateBlock</code>进行多态封装,这样也会更安全。
|
||||
|
||||
在新的更新中,包裹器支持大括号写法,同时可以省略部分参数:
|
||||
```
|
||||
_blockBuilder = new TextBlockBuilder()
|
||||
{
|
||||
new ColorBlock()
|
||||
{
|
||||
"重量"
|
||||
},
|
||||
new DelegateBlock(() => value.ToString()),
|
||||
new SizeBlock(20)
|
||||
{
|
||||
"kg"
|
||||
}
|
||||
};
|
||||
```
|
||||
这里的作用与上面的示例完全一致,更新的包裹器中支持自动填入更多的默认值了,比如颜色默认为白色。
|
||||
|
||||
* 文本转换:自动值转换为文本。
|
||||
* NumberToChinese:将数值转为中文大写。
|
||||
* 沃格纳费舍尔拼写检查器:检查一对或多对文本是否相似,返回最相似的文本序列,及相似度。
|
||||
@@ -313,7 +383,7 @@ TimeStamp用于隐式的,在极短时间内(小于1tick)的时间戳的名
|
||||
|
||||
### 基础使用
|
||||
|
||||
数据库操作的指令被抽象到Order类了(我在注释里会称为解释器),比如sqlClient就是sqlcOrder,其中sqlc代表sqlclient。
|
||||
数据库操作的指令被抽象到Order类了(注释里会称为解释器),比如sqlClient就是sqlcOrder,其中sqlc代表sqlclient。
|
||||
order类本质上是一个文本拼接器,为了方便管理,你可以使用对应类的order.GetOrder来获取池中的一条指令,比如:
|
||||
```
|
||||
var orderValues = SQLCHelper.GetOrder();
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user