C#/.NET/.NET Core应用程序编程开发中如何使用反射对比/比较并找出两个实例对象不同的属性值呢?
2.74K 次浏览
在C#/.NET/.NET Core应用程序编程开发中,假如分别有一个实体类Person
的两个不同的实例对象:person1
和person2
,现需要对比并找出这两个实例对象的属性值不同的属性名称和不同的属性值,应该如何实现呢?
Person.cs
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime DateCreated { get; set; }
}
两个不同的实例对象person1
,person2
定义如下:
// 创建两个需要比较的实体对象
Person person1 = new Person();
person1.Id = 1;
person1.DateCreated = DateTime.Now;
person1.Name = "Greg";
Person person2 = new Person();
person2.Id = 2;
person2.Name = "John";
person2.DateCreated = person1.DateCreated;
想要得到的对比结果类似如下的输出:
4 个回答
-
使用第三方类库组件[Compare-Net-Objects],它使用反射,可以深度比较两个.NET实例对象的不同属性值,并且同时支持.NET Framework 4.0+和.NET Standard。
可以通过包管理工具安装,命令如下:
或者通过.NET CLI命令:
完整的简单使用示例如下:
更多文档请参考:Compare-Net-Objects使用文档