我有一个包含许多属性的类,其中一些是自定义类型的列表。 我需要比较这个类的两个实例,并获得一个不相等的属性列表。
我使用自定义属性设计它(对于我想要包含在比较中的相关属性),并使用IEquatable
,但对于列表我遇到了问题。我打算使用SequenceEqual
,但它需要列表的类型(IEnumerable<SomeType>
),我没有,也不知道如何设置。我知道GetElementType
和GetGenericArguments
方法,但我无法在IEnumerable<>
内使用它们来使SequenceEqual
工作。
我正在为这个场景寻找最好的设计,并且还编写了如何实际操作的示例。
答案 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