私は2つの同様のクラスを持っていますPerson
:PersonDto
public class Person
{
public string Name { get; set; }
public long Serial { get; set; }
public DateTime Date1 { get; set; }
public DateTime? Date2 { get; set; }
}
&
public class PersonDto
{
public string Name { get; set; }
public long Serial { get; set; }
public DateTime Date1 { get; set; }
public DateTime? Date2 { get; set; }
}
私は等しい値で両方の2つのオブジェクトを持っています。
var person = new Person { Name = null , Serial = 123, Date1 = DateTime.Now.Date, Date2 = DateTime.Now.Date };
var dto = new PersonDto { Name = "AAA", Serial = 123, Date1 = DateTime.Now.Date, Date2 = DateTime.Now.Date };
リフレクションによって 2 つのクラスのすべてのプロパティの値を確認する必要があります。私の最終的な目標は、このプロパティの差分値を定義することです。
IList diffProperties = new ArrayList();
foreach (var item in person.GetType().GetProperties())
{
if (item.GetValue(person, null) != dto.GetType().GetProperty(item.Name).GetValue(dto, null))
diffProperties.Add(item);
}
私はこれをしましたが、結果は満足のいくものではありません。diffProperties
結果のカウントは でした4
が、予想のカウントは でした1
。
もちろん、すべてのプロパティは null 値を持つことができます。
一般的なソリューションが必要です。私は何をしなければなりませんか?