Каков наилучший способ сравнить все свойства двух объектов, где некоторые из них имеют разные форматы (например, DateTime
в одном и DateTime.ToString()
с пользовательским форматом в другом)?
Я смог сделать это, используя 2 утверждения:
o1.ShouldHave().AllPropertiesBut(dto1 => dto1.Date).EqualTo(o2);
o1.Date.Should().Be(DateTime.Parse(o2.Date));
Я бы подумал о следующем, но это не компилируется, потому что EqualTo<T>()
является недействительным.
o1.ShouldHave().AllProperties().But(d => d.Date).EqualTo(o2)
.And.Date.Should().Be((DateTime.Parse(o2.Date));
типы:
public class Dto1
{
public int ID { get { return 1; } }
public DateTime Date { get { return DateTime.Now.Date; } }
}
public class Dto2
{
public int ID { get { return 1; } }
public string Date { get { return DateTime.Now.Date.ToShortDateString(); } }
}
var o1 = new Dto1();
var o2 = new Dto2();