🛠️ Core 处理器 (Handlers)
命名空间: Snet.Core.handler | 源码: Snet.Core/handler/
BytesHandler — 字节解析处理器
继承: CoreUnify<BytesHandler, string>
将原始字节数组按 BytesModel 配置解析为结构化的 AddressValue。
// 解析单个 AddressValue
public async Task<OperateResult> TransformAsync(AddressValue addressValue, CancellationToken token = default)
// 批量解析字节数组
public async Task<OperateResult> TransformAsync(byte[] bytes, DateTime time,
IEnumerable<BytesModel> transformParams, CancellationToken token = default)
BytesTransformHandler — 字节序转换器
处理多字节数值在不同字节序(ABCD/BADC/CDAB/DCBA)之间的转换,涵盖所有基础类型。
读取方向 (Trans* — byte[] → 类型)
| 方法签名 | 返回类型 |
|---|---|
TransBool(byte[] buffer, int index) |
bool / bool[] |
TransByte(byte[] buffer, int index, int length) |
byte / byte[] |
TransInt16(byte[] buffer, int index, int length) |
short / short[] / short[,] |
TransUInt16(byte[] buffer, int index, int length) |
ushort / ushort[] |
TransInt32(...) / TransUInt32(...) |
int / uint |
TransInt64(...) / TransUInt64(...) |
long / ulong |
TransSingle(...) / TransDouble(...) |
float / double |
TransString(byte[] buffer, int index, int length, Encoding encoding) |
string |
写入方向 (TransByte — 类型 → byte[])
每种类型均有对应的 TransByte 重载:
public virtual byte[] TransByte(bool value)
public virtual byte[] TransByte(short value)
public virtual byte[] TransByte(int value)
public virtual byte[] TransByte(float value)
public virtual byte[] TransByte(double value)
public virtual byte[] TransByte(string value, Encoding encoding)
// ... 以及对应的数组版本 (bool[], short[], int[], float[], double[])
配置属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
DataFormat |
DataFormat |
— | 字节序 (ABCD/BADC/CDAB/DCBA) |
IsStringReverseByteWord |
bool |
false |
字符串按字反转字节 |
var handler = new BytesTransformHandler(DataFormat.CDAB);
short value = handler.TransInt16(rawBytes, 0); // 按CDAB序解析
byte[] bytes = handler.TransByte(12345); // 按CDAB序编码
AddressHandler — 虚拟地址拦截器
在 ReadAsync 管道中,在实际 I/O 发生之前拦截虚拟地址。
// 对单个地址执行虚拟地址处理
public static AddressValue? ExecuteDispose(this AddressDetails addressDetails,
object? value, string? message)
// 特殊释放处理
public static AddressValue? ExecuteSpecialDispose(this AddressDetails addressDetails,
string? value, string? message)
// 关闭所有虚拟地址实例
public static void Shutdown()
public static async Task ShutdownAsync()
工作原理
ReadAsync(Address address)
└── foreach (AddressDetails detail in address)
├── AddressType == Reality → 真实I/O
└── AddressType == Virtual* → ExecuteDispose() → 内存生成值
LanguageHandler — 语言解析器
静态全局语言管理,配合 ILanguage 接口和 MultilingualAttribute。
// 根据关键字获取当前语言的键值
public static string? GetLanguageValue(this string key, LanguageModel? languageModel = null)
public static async Task<string?> GetLanguageValueAsync(this string key, ...)
// 获取/设置当前语言
public static LanguageType GetLanguage()
public static async Task<LanguageType> GetLanguageAsync(CancellationToken token = default)
public static bool SetLanguage(this LanguageType language)
public static async Task<bool> SetLanguageAsync(this LanguageType language, ...)
// 使用自定义 LanguageModel 获取翻译
public static string? GetLanguageValue<T>(this T model, string key) where T : LanguageModel, new()
// 语言变更事件 (全局)
public static event EventHandler<EventLanguageResult> OnLanguageEvent
public static event EventHandlerAsync<EventLanguageResult> OnLanguageEventAsync
// 设置中文
LanguageType.zh.SetLanguage();
// 获取翻译值
string label = "connection.success".GetLanguageValue(); // → "连接成功"
ParamHandler — 参数反射生成器
通过反射将配置对象转为 UI 表单参数模型。
// 将任意对象转为 ParamModel UI 描述
public static OperateResult Get<T>(T obj, string name, string description,
List<propertie>? properties = null)
读取 [Display]、[Unit]、[Verify] 等特性,自动生成包含控件类型、验证规则、默认值的 ParamModel。
