处理器 - Snet Docs

🛠️ 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

参见