OperateResult - Snet Docs

✅ OperateResult

命名空间: Snet.Core | 类: EventArgsAsync, BaseModel, ResultModel, OperateResult

OperateResult 是所有 Snet 操作返回的标准结果封装。它建立在从基本事件参数到携带状态信息的模型,再到包含计时信息的完整操作结果的分层继承链之上。

继承层次结构

EventArgsAsync                  -- 基本异步事件参数
  └── BaseModel                 -- 状态和消息
        └── ResultModel         -- + 结果数据负载
              └── OperateResult -- + 运行时间测量

类参考

EventArgsAsync

所有 Snet 事件参数的根类。提供兼容异步的事件参数基础设施。

BaseModel

属性 类型 描述
Status int 操作状态码(0 = 成功,非零 = 错误)
Message string 人类可读的状态/错误消息
Time DateTime 结果产生的时间戳
var result = await op.ReadAsync("40001");
if (result.Status == 0)
{
    Console.WriteLine($"成功于 {result.Time}: {result.Message}");
}
else
{
    Console.WriteLine($"错误 [{result.Status}] 于 {result.Time}: {result.Message}");
}

ResultModel : BaseModel

为基础模型添加一个类型化的结果数据负载:

属性 类型 描述
ResultData object? 操作返回的数据负载
var result = await op.ReadAsync("40001");
if (result.Status == 0 && result.ResultData != null)
{
    // 处理结果数据
    Console.WriteLine($"数据: {result.ResultData}");
}

OperateResult : ResultModel

最终的结果类型。添加运行时间测量:

属性 类型 描述
RunTime long 操作执行时间(毫秒)
var result = await op.ReadAsync("40001");
Console.WriteLine($"状态: {result.Status}");
Console.WriteLine($"消息: {result.Message}");
Console.WriteLine($"时间: {result.Time}");
Console.WriteLine($"运行时间: {result.RunTime} ms");
Console.WriteLine($"数据: {result.ResultData}");

工厂方法

OperateResult 提供静态工厂方法来创建结果:

CreateSuccessResult

// 创建带数据的成功结果
var success = OperateResult.CreateSuccessResult(readData, "读取成功完成");

// 创建不带数据的成功结果
var success2 = OperateResult.CreateSuccessResult("操作完成");

CreateFailureResult

// 创建带状态码的失败结果
var failure = OperateResult.CreateFailureResult(1, "设备无响应");

// 创建带异常的失败结果
var failure2 = OperateResult.CreateFailureResult(ex, "连接超时");

使用模式

检查操作状态

var result = await op.ReadAsync("DB1.DBD0");

if (result.Status == 0)
{
    // 成功路径
    ProcessData(result.ResultData);
}
else
{
    // 错误路径
    LogError(result.Status, result.Message);
}

读取多个地址

var results = await op.ReadAsync(new[] { "40001", "40002", "40003" });

foreach (OperateResult r in results.ResultData as IEnumerable<OperateResult>)
{
    if (r.Status == 0)
    {
        Console.WriteLine($"40001: {r.ResultData}");
    }
}

事件处理

op.OnDataEventAsync += result =>
{
    // result 是 OperateResult 类型
    Console.WriteLine($"[{result.Time:HH:mm:ss}] {result.Message}");
    Console.WriteLine($"  运行时间: {result.RunTime} ms");

    if (result.Status != 0)
    {
        Console.WriteLine($"  错误: {result.Message}");
    }
    return Task.CompletedTask;
};

时间监控

var result = await op.ReadAsync("40001");

if (result.RunTime > 500)
{
    Console.WriteLine($"警告: 读取耗时 {result.RunTime} ms(较慢)");
}
else
{
    Console.WriteLine($"读取完成于 {result.RunTime} ms");
}

状态码

含义
0 成功
1 一般错误
2 超时错误
3 连接错误
4 无效地址错误
5 认证错误

参见