【发布时间】:2013-11-19 13:31:10
【问题描述】:
我有一个包含这个属性的类:
public class Person
{
public long Id { get; set; }
public string Name { get; set; }
public int? IdCountry { get; set; }
public virtual Country Country { get; set; }
public int? IdState { get; set; }
public virtual State State { get; set; }
}
public class Country
{
public int Id { get; set; }
public string Name { get; set; }
}
public class State
{
public int Id { get; set; }
public string Name { get; set; }
public int IdCountry { get; set; }
public virtual Country Country { get; set; }
}
在单元测试中,我创建了 2 个具有相同值的对象
Person expected = new Person()
{
Name = "blablablbla",
Id = 1
};
Person actual = PessoaFactory.Create(Name: "blablablbla", Id: 1);
Assert.AreEqual<Person>(expected, actual);
但是 Assert.AreEqual 会抛出异常。
【问题讨论】:
-
因为 Object.Equals() (最终会被调用)会比较引用(你有类,而不是结构),显然它们是两个不同的对象(两个实例)。 重写它,如果您想在 Person 之间实现某种比较(什么样的比较...这取决于。仅 ID?所有字段?由您决定)。