为 IData、IExtend、IFilter 和 IModel 接口添加或更新了详细的 XML 注释,明确了各接口及其属性的用途、设计意图和使用场景: - IData:补充数据帧接口的设计说明,详细描述 Packet、Remote 等属性的作用及线程安全注意事项。 - IExtend:强调扩展属性的使用场景,与 IModel 的模型属性区分;更新 Obsolete 标记,建议替代方案。 - IFilter:引入责任链模式的注释,新增泛型方法 Find<TFilter>,优化 FilterBase 的流程控制说明。 - IModel:明确模型属性访问的设计目的,建议优化键与属性名映射,补充缺失键的处理建议。
石头
authored at
2025-09-24 01:13:30
X
using System.Net;
namespace NewLife.Data;
/// <summary>数据帧接口。用于网络通信领域,定义数据帧的必要字段</summary>
/// <remarks>
/// 该接口抽象了一次数据收发过程中的核心载体:
/// - <see cref="Packet"/> 表示尚未解码的原始二进制数据包;
/// - <see cref="Message"/> 表示对 <see cref="Packet"/> 解码后的高阶消息对象;
/// - <see cref="Remote"/> 标识对应的远端终结点(来源/目的地址);
/// - <see cref="UserState"/> 可携带跨层透传的用户自定义上下文数据。
///
/// 约定与注意:
/// - 同一实例在不同阶段可仅设置其中一项(例如仅有 <see cref="Packet"/> 或仅有 <see cref="Message"/>)。
/// - 是否线程安全由具体实现决定,默认不保证线程安全。
/// </remarks>
public interface IData
{
#region 属性
/// <summary>原始数据包</summary>
/// <remarks>网络层收到的原始二进制数据;解码后可转存为 <see cref="Message"/>。允许为空。</remarks>
IPacket? Packet { get; set; }
/// <summary>远程地址</summary>
/// <remarks>接收方向:报文来源;发送方向:目标地址。允许为空。</remarks>
IPEndPoint? Remote { get; set; }
/// <summary>解码后的消息</summary>
/// <remarks>从 <see cref="Packet"/> 解码得到的业务对象,或待编码发送的对象。允许为空。</remarks>
Object? Message { get; set; }
/// <summary>用户自定义数据</summary>
/// <remarks>用于跨层传递额外上下文信息(如追踪标识、调用参数等)。实现不应对其内容做假设。允许为空。</remarks>
Object? UserState { get; set; }
#endregion
}
|