Как проверить равенство свойств типа коллекции, используя отражение в C # - PullRequest
2 голосов
/ 29 марта 2011

У меня есть класс со многими свойствами, некоторые из них являются списками пользовательских типов. Мне нужно сравнить два экземпляра этого класса и получить список свойств, которые в них не равны.

Я разработал его с пользовательскими атрибутами (для соответствующих свойств, которые я хочу включить в сравнение) и с использованием IEquatable, но для списков я столкнулся с проблемами. Я собирался использовать SequenceEqual, но для этого требуется тип списка (IEnumerable<SomeType>), которого у меня нет и я не знаю, как установить. Мне известны методы GetElementType и GetGenericArguments, но я не могу использовать их внутри IEnumerable<>, чтобы заставить SequenceEqual работать.

Я ищу лучший дизайн для этого сценария, а также примеры кода того, как на самом деле это сделать.

1 Ответ

4 голосов
/ 29 марта 2011

Этот проект Codeplex выполняет глубокое сравнение любых двух объектов .NET, используя отражение: http://comparenetobjects.codeplex.com/

Описание проекта

Выполните глубокое сравнение любых двух объектов .NET с помощью отражения. Показывает различия между двумя объектами.

1008 * Совместимость * Совместимо с .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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...