首页 / 问答 / C#/.NET/.NET Core应用程序编程开发中如何使用反射对比/比较并找出两个实例对象不同的属性值呢?

C#/.NET/.NET Core应用程序编程开发中如何使用反射对比/比较并找出两个实例对象不同的属性值呢?

.NET C# 反射 属性 .NET Core 2.62K 次浏览
0

在C#/.NET/.NET Core应用程序编程开发中,假如分别有一个实体类Person的两个不同的实例对象:person1person2,现需要对比并找出这两个实例对象的属性值不同的属性名称和不同的属性值,应该如何实现呢?

Person.cs

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime DateCreated { get; set; }
}

两个不同的实例对象person1person2定义如下:

// 创建两个需要比较的实体对象
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 个回答

  • 0

    使用第三方类库组件[Compare-Net-Objects],它使用反射,可以深度比较两个.NET实例对象的不同属性值,并且同时支持.NET Framework 4.0+和.NET Standard。

    可以通过包管理工具安装,命令如下:

    或者通过.NET CLI命令:

    完整的简单使用示例如下:

    更多文档请参考:Compare-Net-Objects使用文档

    Rector的个人主页

    Rector

    2020-04-21 回答

    • 0

      如果你不想使用第三方的.NET实例对象对比库,我们也可以使用反射来自已创建一个简易的帮助类,示例如下:

      Rector的个人主页

      Rector

      2020-04-21 回答

      • 0

        调用示例代码如下:

        Rector的个人主页

        Rector

        2020-04-21 回答

        • 0

          使用AnyDiff或者ObjectComparator类库组件,具体请至各源码托管地址查看。

          Rector的个人主页

          Rector

          2020-04-21 回答

          我来回答