实体类的动态生成(二)
2018-07-16
前言
/* 源码位于 Zongsoft.CoreLibary 项目的 Zongsoft.Data 命名空间中 */
/// <summary> 表示数据实体的接口。</summary>
public interface IEntity
{
/// <summary>
/// 判断指定的属性或任意属性是否被变更过。
/// </summary>
/// <param name="names">指定要判断的属性名数组,如果为空(null)或空数组则表示判断任意属性。</param>
/// <returns>
/// <para>如果指定的<paramref name="names"/>参数有值,当只有参数中指定的属性发生过更改则返回真(True),否则返回假(False);</para>
/// <para>如果指定的<paramref name="names"/>参数为空(null)或空数组,当实体中任意属性发生过更改则返回真(True),否则返回假(False)。</para>
/// </returns>
bool HasChanges(params string[] names);
/// <summary>
/// 获取实体中发生过变更的属性集。
/// </summary>
/// <returns>如果实体没有属性发生过变更,则返回空(null),否则返回被变更过的属性键值对。</returns>
IDictionary<string, object> GetChanges();
/// <summary>
/// 尝试获取指定名称的属性变更后的值。
/// </summary>
/// <param name="name">指定要获取的属性名。</param>
/// <param name="value">输出参数,指定属性名对应的变更后的值。</param>
/// <returns>如果指定名称的属性是存在的并且发生过变更,则返回真(True),否则返回假(False)。</returns>
/// <remarks>注意:即使指定名称的属性是存在的,但只要其值未被更改过,也会返回假(False)。</remarks>
bool TryGetValue(string name, out object value);
/// <summary>
/// 尝试设置指定名称的属性值。
/// </summary>
/// <param name="name">指定要设置的属性名。</param>
/// <param name="value">指定要设置的属性值。</param>
/// <returns>如果指定名称的属性是存在的并且可写入,则返回真(True),否则返回假(False)。</returns>
bool TrySetValue(string name, object value);
}设计思想
实现示范
性能对比
实现完善
新问题
新办法
总结
Last updated