【发布时间】: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