的两个物体之间的变化到目前为止,反射似乎只有这样才能动态检查,如果两个对象是相同的。您可以通过迭代对象的成员并检查哪些包含不同的值来完成此操作。然而,研究告诉我,用这种方式反射对性能不利。.NET 4.0:寻找一个*动态*法检测同一类型
如果有人能证实此反射是否确实不是一个很好的选择。我需要做的,也许还有其他选择吗?
请注意,无论我走哪条路线,我都需要解决方案是动态的。这意味着没有重写Equals,然后逐一比较每个属性。如果它是动态的,我可以编写一种适用于所有类型的方法。
的两个物体之间的变化到目前为止,反射似乎只有这样才能动态检查,如果两个对象是相同的。您可以通过迭代对象的成员并检查哪些包含不同的值来完成此操作。然而,研究告诉我,用这种方式反射对性能不利。.NET 4.0:寻找一个*动态*法检测同一类型
如果有人能证实此反射是否确实不是一个很好的选择。我需要做的,也许还有其他选择吗?
请注意,无论我走哪条路线,我都需要解决方案是动态的。这意味着没有重写Equals,然后逐一比较每个属性。如果它是动态的,我可以编写一种适用于所有类型的方法。
反射是一种很好的方法。那么编写你自己的对象哈希方法。如果你编写一个哈希方法来查看所有需要比较的属性,并将其作为一个散列值,它应该是一个非常快速的比较。您可能也需要使用反射。对object.GetHashCode()的覆盖排序,但不考虑正在查看的引用 - 只是值。
尝试一下 - 然后再决定性能是否成问题。
您需要优化“相同”和“性能”的定义。 – mathieu
否则,我会建议您将这些对象序列化为字符串(JSON,XML ...)并比较字符串是否相等。 – mathieu
反射并非黑魔法。它并不总是“缓慢”。它比一些事情慢,但有时它是正确的使用工具。 –