【问题标题】:Use AutoMapper for equality testing?使用 AutoMapper 进行相等性测试?
【发布时间】:2018-07-19 11:52:05
【问题描述】:

假设我有一堂课。为简单起见,我们假设它的字段都是字符串:

public class Book {
    public string Title {get;set;}
    public string Author {get;set;}
}

我想将两本书定义为相等当且仅当它们对应的字段具有相等的值。此外,我想这样做,如果我稍后添加另一个字符串字段(例如 Publisher),则相等性测试将检查所有字段,包括新字段。

我想知道 AutoMapper 是否可以做到这一点。如果没有,有什么好的方法吗?

显然,从长远来看,我也对字段具有其他类型的情况感兴趣。但即使是为字符串做这件事也是一个很好的开始。

【问题讨论】:

  • 对你来说“等于”是否意味着对于字符串,字母大小写计数?或者你想要不区分大小写的比较?一些可能的答案可能会受到您想要在那里做的事情的影响。
  • 现在,让我们说区分大小写。但从长远来看,这两种方式都是有趣的问题。
  • 简单地覆盖Equals(和GetHashCode)。让您的 Equals 方法考虑您关心的所有属性。
  • @PaulSuart 他想要一种自动执行此操作的方法,以便在添加/删除属性时无需更改它。
  • 您始终可以通过使用反射来迭代属性的方式覆盖它。我不会提倡他正在寻求做的事情 - 几乎肯定会导致不必要的额外复杂性。

标签: c# automapper equality


【解决方案1】:

有一些库已经这样做了,不需要使用 AutoMapper。

例如: Deep Equal

还有: Equality Comparer

【讨论】:

    猜你喜欢
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多