根据Id值和属性值进行独立比较

时间:2016-10-03 14:17:29

标签: c# .net iequatable

我正在使用抽象类require 'json' payload.to_json ,如下所示:

RepositoryItemBase

由于打算将其保存到存储库,我做出了以下设计选择:

  1. 当我致电public abstract class RepositoryItemBase : ICloneable, IEquatable<Dto> { protected internal Guid Id => Guid.NewGuid(); protected RepositoryItemBase() { } public object Clone() { return MemberwiseClone(); } public bool Equals(Dto other) { //?? } } 时,我希望在保存时克隆该项目,以便我可以继续编辑它而不更改存储的引用,直到我再次致电repo.Save(repoItem);
  2. 如果我使用包含相同ID但属性值不同的项目来呼叫repo.Save(repoItem),我希望它可以调用私有Save;
  3. 如果我调用repo.Update(repoItem)并且具有相同Id的存储项也具有相同的属性值,则该方法立即返回实际上持久化的内容;
  4. 我的问题是:

      
        
    • 是否有常见的C#/ .Net成语/接口来区分基于Id的比较和基于属性值的比较?我想独立完成这两种比较。

    •   
    • Save是实施的最佳界面吗?

    •   
    • .Net是否有某种IEquatableIIdentifiable界面,IIdentity属性或类似内容?

    •   

0 个答案:

没有答案