将来自同一类的两个对象与大量字段进行比较

时间:2010-07-13 08:00:31

标签: c# .net override compare equals

我从同一个类中获得了两个对象,我需要逐个字段地比较它们。问题在于它们有近百个字段,手工编写这些字段将是很好的工作。

你知道更容易的方法吗? Java中的反思可能是一个解决方案,但在我看来,它似乎是一个黑客。毕竟我寻求C#解决方案。

4 个答案:

答案 0 :(得分:4)

两个想法:

  1. 使用反射(它在C#中可用)运行时并循环比较它们的clas的字段。如果您希望能够排除某些字段,可以通过创建属性类来标记,并标记您不想与该属性进行比较的字段。

  2. 使用反射以相同的方式遍历字段并生成所需的比较代码。这样您将获得“真实”代码,但不必自己编写和维护。属性可用于微调生成的比较代码。

答案 1 :(得分:1)

最好是重构你的代码,百分之百的字段是糊涂的。

如果你不能,因为遗留代码找出哪个属性使它们等于。

答案 2 :(得分:0)

如果您很幸运,您将识别一个或两个对于该实例唯一的属性 - 特别是如果您的类代表数据库实体 - 您只需要比较这些唯一属性。

答案 3 :(得分:0)

使用正则表达式查找和替换。当你必须添加字段时会很痛苦*(删除的字段会导致编译错误),但是你可以获得编译代码的好处。

但是,真的,考虑将课程分开。如果有100个字段,是否可以将它们分组到组件类中? 100名成员需要管理很多。