比较 2 个对象的通用代码
我有两个不同的对象需要比较相等性
我可以使用反射编写一些代码来比较属性值,但想知道 .net 4.0 中是否有任何新模式可以解决这个问题
i've two objects of different that need to be compared for equality
I can write some code using reflection to compare the property values but wondering if there're any new patterns in .net 4.0 that address this
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
问题。您必须编写自己的代码。
No. You'll have to write your own.
您可以在公共接口中实现公共比较属性,并将它们作为该接口类型进行比较。
You can implement the common comparison properties in a common interface and simply compare them as that interface type.
您需要您的类实现
IComparable
,然后重写并实现CompareTo
方法,以帮助 C# 了解应如何比较这些对象。作为一个例子,我想比较两个小部件。它是一个复杂的类,包含整数和字符串。我相信整数和字符串长度的组合将确定哪个对象更大。
You need your class to implement
IComparable
and then override and implement theCompareTo
method to help C# understand how it should compare those objects.As an example, I want to compare two widgets. It is a complex class that contains both an integer and a string. I believe that the combination of the integer and the length of the string will determine which object is larger.
如果您正在比较对象,您可能需要像这样重新定义 Equals() 函数:
然后您可以简单地执行以下操作: userbob.Equals(userAnne)
If you are comparing objects you might want to redefine the Equals() function like this :
Then you can simply do a : userbob.Equals(userAnne)
对于比较大型对象图的快速而肮脏的方法,请将每一边转储到 json,然后使用文本差异。
For a quick-and-dirty method of comparing large obejct graphs, dump each side to json and then use a text diff.