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

时间:2011-03-29 17:04:12

标签: c# .net reflection comparison

我有一个包含许多属性的类,其中一些是自定义类型的列表。 我需要比较这个类的两个实例,并获得一个不相等的属性列表。

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

我正在为这个场景寻找最好的设计,并且还编写了如何实际操作的示例。

1 个答案:

答案 0 :(得分:4)

此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