我在系统中有DTO类的数量。它们被组织在继承层次结构中。将子类实例的基类部分与另一个基类实例进行比较
class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string ListName { get; set; }
}
class PersonDetailed : Person
{
public string WorkPhone { get; set; }
public string HomePhone { get; set; }
public byte[] Image { get; set; }
}
将其拆分的原因是能够获得例如人的列表,搜索结果,而不必拖动沉重的图像和电话号码。然后在选择一个人的详细信息时加载完整的PersonDetail
DTO。
我遇到的问题是在编写单元测试时比较这些。假设我有
Person p1 = myService.GetAPerson();
PersonDetailed p2 = myService.GetAPersonDetailed();
// How do I compare the base class part of p2 to p1?
Assert.AreEqual(p1, p2);
的Assert
上面会失败,因为p1
和p2
属于不同类别。是否有可能以某种方式将p2
的基类部分与p1
进行比较?我是否应该在Person
上实施IEquatable<>
?其他建议?