У нас есть два класса, которые имеют одинаковые общедоступные средства доступа (и многие из них), но принадлежат к разным областям в иерархии объектов;нам нужно скопировать и сравнить эти два объекта.Мы могли бы вручную написать конструктор копирования и оператор сравнения, который сравнивает значения одноименных методов доступа, но кажется, что должен быть лучший способ сделать это, используя отражение и LINQ.
Пример:у нас есть класс ClassA, который имеет 70 аксессоров;У нас также есть класс ClassB, который имеет 70 методов доступа, которые определены с тем же именем и типом, что и методы доступа ClassA.общедоступные средства доступа ClassA и используют эти имена для установки значений соответствующего средства доступа в ClassB равным значению средства доступа в ClassA.Грубо говоря, в psuedocode:
foreach (string accName in ClassA.Accessors[])
BInstance.Accessors[accName].Value = AInstance.Accessors[accName].Value;
И, конечно, то же самое можно использовать для проверки равенства между двумя классами.Мои знания C # Reflection и LINQ недостаточно хороши, чтобы знать, как это сделать, но я клянусь, что это относительно просто.