为 IData、IExtend、IFilter 和 IModel 接口添加或更新了详细的 XML 注释,明确了各接口及其属性的用途、设计意图和使用场景: - IData:补充数据帧接口的设计说明,详细描述 Packet、Remote 等属性的作用及线程安全注意事项。 - IExtend:强调扩展属性的使用场景,与 IModel 的模型属性区分;更新 Obsolete 标记,建议替代方案。 - IFilter:引入责任链模式的注释,新增泛型方法 Find<TFilter>,优化 FilterBase 的流程控制说明。 - IModel:明确模型属性访问的设计目的,建议优化键与属性名映射,补充缺失键的处理建议。
石头 authored at 2025-09-24 01:13:30
1.03 KiB
X
namespace NewLife.Data;

/// <summary>模型数据接口,支持通过键索引读写“模型属性”</summary>
/// <remarks>
/// 目的:在不直接使用反射的情况下,以字符串键访问模型属性,常用于 WebApi 模型、XCode 实体、对象拷贝与绑定。
/// 说明:实现者应将键与公开属性名(或逻辑名)映射,避免高频场景中频繁反射;可以通过缓存或源码生成优化。
/// 建议:对缺失键的读取返回 null;写入缺失键时由实现自行决定是忽略、创建还是抛出异常,但应在实现类文档中说明。
/// 关系:大部分场景逐步替代 <see cref="IExtend"/>;<see cref="IExtend"/> 适合“临时扩展字段”,而本接口面向“模型属性”。
/// </remarks>
public interface IModel
{
    /// <summary>设置 或 获取 模型数据项</summary>
    /// <param name="key">属性名或逻辑键</param>
    /// <returns>存在则返回属性值;未命中返回 null(推荐约定)</returns>
    Object? this[String key] { get; set; }
}