我有很多数据传输对象 (DTO),每个都包含很多简单的字段。我需要在所有这些上实现 Equals(所以我可以编写一些单元测试来传输它们 var WCF)。
我正在使用的代码是:
public override bool Equals(object rhs)
{
RequestArguments other = rhs as RequestArguments;
return
other != null &&
other.m_RequestId.Equals(RequestId) &&
other.m_Type.Equals(m_Type) &&
other.m_Parameters.Equals(m_Parameters) &&
other.m_user.Equals(m_user);
}
一定有更好的方法!... (列出所有字段是宁愿要求错误和维护问题)
例如我们有对象。MemberwiseClone() 可以帮助解决 Cloning() 案例,但我找不到任何可以帮助解决 Equals 的问题。我们在完全信任的情况下运行,因此基于反射的解决方案是一个答案,但我宁愿不重新发明轮子。
(抱歉,我们没有从特定领域的语言生成 DTO,否则这种事情会很容易!而且我无法更改构建系统以添加另一个步骤)