✅ 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 |
认证错误 |
