c# - 如何在 C# 中使用反射检查集合类型属性的相等性

标签 c# .net reflection comparison

我有一个具有许多属性的类,其中一些是自定义类型的列表。 我需要比较此类的两个实例,并获取它们中不相等的属性列表。

我使用自定义属性(对于我想要包含在比较中的相关属性)来设计它,并使用 IEquatable ,但是对于列表我遇到了问题。我打算使用 SequenceEqual 但它需要列表的类型( IEnumerable<SomeType> ),我没有也不知道如何设置。我知道 GetElementType GetGenericArguments 方法,但我不能在 IEnumerable<> 中使用它们使 SequenceEqual工作。

我正在寻找适合此场景的最佳设计,以及如何实际执行此操作的代码示例。

最佳答案

此 Codeplex 项目使用反射对任意两个 .NET 对象执行深度比较: http://comparenetobjects.codeplex.com/

项目描述

使用反射对任意两个 .NET 对象执行深度比较。显示两个对象之间的差异。

兼容性

与 .NET Framework 3.5 及更高版本兼容。 2.0 中的新增功能,可移植类库版本适用于 .NET 4.0+、Silverlight 5+、Windows Phone 8+、Windows RT 8+、Xamarin iOS 和 Xamarin Droid

NuGet 包

http://www.nuget.org/packages/CompareNETObjects

关于c# - 如何在 C# 中使用反射检查集合类型属性的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5476200/

相关文章:

c# - 无法将 ASP 服务器控件值传递给 javascript 函数

c# - 如何收集不同子字符串触发器后的特定子字符串列表?

c# - 如何为 XmlAttributeCollection 编写 LINQ 语句?

c# - 使用 Azure DevOps 获取个人访问 token

c# - 在 MVVM Light 的 ViewModel 之外注册消息?

c# - DownloadFile 创建 0 字节文件

c# - 如何使用 Entity Framework 保证代码与派生字段一致

java - 如何创建动态 IF 语句?反射?

generics - 存在主义和废弃你的样板

c# - 如何使用反射返回从泛型子类化的所有类,而不给出特定的泛型类型