C# 哪种方式比较对象更好/更合适?
我正在使用specflow编写测试REST服务的测试。测试的主题是检查我从服务获取的列表是否包含正确的对象 我在后台部分有样本数据,每次运行时都会将其放入数据库中,每次运行后都会将其清除。关键是我知道数据库中的确切数据,应该将对象与DTO类进行比较 在我的测试中,我必须比较请求调用反序列化JSON字符串以列出REST服务url的结果和测试数据填充列表。所以,我有两个清单。问题是哪种方法比较它们更好 A、 我编写了一个通用的comparator类,我不希望测试库和应用程序之间存在依赖关系,步骤如下 传递方法名称,例如合作伙伴名称 从任一列表中获取一个项,并调用该方法以获得具体数据,从而在另一个对象列表中找到相同的对象 让具体的数据循环通过另一个集合,对列表中的每个对象调用给定的方法,并比较我在上一步中得到的结果 如果找到所需的类,则使用equals方法比较它们 B, 从任一列表中选取一项 循环浏览另一个列表,并使用equals方法将每个项目与我在上一步中得到的项目进行比较 目前我有两个办法。我已经读了一些关于比较的文章,我不想让它变得比需要的更复杂。我的意思是,实现IComparable接口,覆盖GetHashCode方法。另一方面,我不确定如果DTO类为了测试而实现接口是否好 也许我读得不够多,或者我离问题太近了。我想问你的是,回顾一下我的两种可能的方法——我绝对不确定它们是否正确——如果你知道一篇关于这个问题的文章,请与我分享。我不需要现有的解决方案——无脑地使用他人的代码不是我的方式——我需要去哪里的提示 文章: MSDN材料C# 哪种方式比较对象更好/更合适?,c#,compare,C#,Compare,我正在使用specflow编写测试REST服务的测试。测试的主题是检查我从服务获取的列表是否包含正确的对象 我在后台部分有样本数据,每次运行时都会将其放入数据库中,每次运行后都会将其清除。关键是我知道数据库中的确切数据,应该将对象与DTO类进行比较 在我的测试中,我必须比较请求调用反序列化JSON字符串以列出REST服务url的结果和测试数据填充列表。所以,我有两个清单。问题是哪种方法比较它们更好 A、 我编写了一个通用的comparator类,我不希望测试库和应用程序之间存在依赖关系,步骤如下
提前谢谢你的帮助 要比较对象本身,应覆盖Equals方法。 如果在某个时间点您的对象可能被用作字典中的键或类似的东西,那么也要覆盖GetHashCode 然后可以使用Enumerable.SequenceEqual检查两个列表是否相等。
您也可以创建一个IEqualityComparer并将其传递给SequenceEqual调用,而不是在对象上实现Equals,但我认为实现Equals是更通用的方法。谢谢您的帮助!我的DTO对象正在实现接口,我覆盖了Equals方法。这样,我就可以使用。我必须说,它太完美了!