比较两个复杂的对象

时间:2015-01-09 16:35:15

标签: vb.net

我搜索了stackoverflow并找到了很多答案来比较Visual Studio中的两个复杂对象(特别是VB.NET),但是没有找到适合我的东西。

我的对象包含40多种不同数据类型的属性(整数,双精度,双精度列表,字符串列表列表等),并且可以在程序更新的任何时候添加其他属性,因此使用反射手动输入出每个属性名称对我没用。

具体来说,这就是两个对象的组织方式

Obj1 = New List(of CustomClass)
Obj2 = New List(of CustomClass)

“CustomClass”有40多个属性,例如:

Dim _Color1 as Color
Dim Prop1 as New List(of String)
Dim _Event1 as New List(of List(of String))
...

我尝试过使用:     Obj1是Obj2     Object.Compare(Obj1,Obj2)     Obj1.equals(OBJ2)

即使Obj1和Obj2包含相同的值,它们仍然会评估为false。

我也试过了:

For Each ObjSub as CustomClass in Obj1
    If Obj2.Contains(Obj1) = True Then

    End If
Next

但是。即使Obj1和Obj2包含相同的值,.Contains也会计算为False。

有没有办法比较Obj1和Obj2中的值而不必输入所有40-ish属性?

2 个答案:

答案 0 :(得分:1)

您要查找的内容称为递归比较。不幸的是,.NET框架中没有任何内置功能可以做到这一点。

这是一项非常重要的任务,特别是如果您有嵌套的集合类型。以下问题列出了C#人员针对此问题找到的一些常见解决方案。如果您将它们转换为VB或将它们用作外部库,它们也可能是您的选择:

答案 1 :(得分:0)

尝试使用此代替代码:

For Each ObjSub as CustomClass in Obj1
    If Obj2.Contains(ObjSub) Then

    End If
Next

您想知道Obj2是否包含Obj1元素,而不是Obj1本身。