我有一个具有许多属性的类,其中一些是自定义类型的列表。 我需要比较此类的两个实例,并获取它们中不相等的属性列表。
我使用自定义属性(对于我想要包含在比较中的相关属性)来设计它,并使用 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 包
关于c# - 如何在 C# 中使用反射检查集合类型属性的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5476200/