2015-01-09 3 views
2

stackoverflow를 통해 검색 한 결과 Visual Studio (특히 VB.NET)의 두 가지 복잡한 개체를 비교하는 데 많은 해답을 찾았지만 나에게 적합한 것이 없습니다.두 개의 복잡한 개체 비교

내 개체는 다른 데이터 형식 (정수, double, double 목록, 문자열 목록 등)의 40 개가 넘는 속성을 포함하며 프로그램이 업데이트 될 때마다 다른 속성이 추가 될 수 있으므로 수동으로 리플렉션을 사용하십시오 각 속성 이름을 입력하면 유용하지 않습니다. OBJ1입니다 obj2보다 개체 :

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

내가 사용 시도했다 :

은 특히이 두 객체가 같은 40 개 이상의 속성을 가진 '에서는 CustomClass "

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

을 구성하는 방법입니다 .Bcompare (Obj1, Obj2) Obj1.equals (Obj2)

Obj1과 Obj2가 s ame 값은 여전히 ​​false로 평가됩니다.

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

    End If 
Next 

을하지만 .Contains 또한으로 obj1과 obj2보다가 같은 값을 포함해도 False로 평가 :

는 I도 시도했습니다.

모든 40-ish 속성을 입력하지 않고도 Obj1 및 Obj2의 값만 비교할 수 있습니까?

답변

1

또는 재귀 비교이라고합니다. 안타깝게도 .NET 프레임 워크에 내장 된 기능은 없습니다.

중첩 된 컬렉션 유형이있는 경우 특히 그렇습니다. 다음 질문은 C# 사람들이이 문제에서 발견 한 몇 가지 일반적인 해결책을 나열합니다.

+0

http://converter.telerik.com/ 온라인 코드 변환기 ... 완벽하지는 않지만 링크 된 예제를 사용하면 좋은 시작을 제공해야합니다. – user2366842

+0

감사합니다! 나는 C# 깊은/재귀 객체 질문에서 대답을 사용하고 완벽하게 일했습니다. 그 질문은 C# 용 이었지만 .NET 오브젝트 비교에는 실제로 VB.NET에서 사용할 수있는 DLL 파일이있었습니다. 다시 한번 감사드립니다. – aardvarkm11

0

대신 당신이 코드를 사용해보십시오 :

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

    End If 
Next 
당신이 VB 또는 외부 라이브러리로 사용하는 변환하면 그들은뿐만 아니라 당신을위한 옵션이 될 수 있습니다

Obj2요소 인Obj1이고 Obj1이 아닌지 확인하고 싶습니다.