반응형
두 개체를 비교하여 차이점을 찾습니다.
두 물체를 비교하고 차이점을 찾는 가장 좋은 방법은 무엇입니까?
Customer a = new Customer();
Customer b = new Customer();
단일 유연한 솔루션:반사를 사용하여 모든 속성을 열거하고 어떤 속성이 동일한지 여부를 확인한 다음 일부 속성 목록과 서로 다른 값을 반환할 수 있습니다.
다음은 당신이 요청하는 것에 대해 좋은 시작이 되는 코드의 예입니다.지금은 필드 값만 살펴보지만 반사를 통해 확인할 수 있도록 다른 구성 요소를 추가할 수 있습니다.모든 개체가 사용할 수 있도록 확장 방법을 사용하여 구현됩니다.
사용할 제품
SomeCustomClass a = new SomeCustomClass();
SomeCustomClass b = new SomeCustomClass();
a.x = 100;
List<Variance> rt = a.DetailedCompare(b);
비교할 나의 샘플 수업
class SomeCustomClass
{
public int x = 12;
public int y = 13;
}
그리고 고기와 감자.
using System.Collections.Generic;
using System.Reflection;
static class extentions
{
public static List<Variance> DetailedCompare<T>(this T val1, T val2)
{
List<Variance> variances = new List<Variance>();
FieldInfo[] fi = val1.GetType().GetFields();
foreach (FieldInfo f in fi)
{
Variance v = new Variance();
v.Prop = f.Name;
v.valA = f.GetValue(val1);
v.valB = f.GetValue(val2);
if (!Equals(v.valA, v.valB))
variances.Add(v);
}
return variances;
}
}
class Variance
{
public string Prop { get; set; }
public object valA { get; set; }
public object valB { get; set; }
}
메소드와 인터페이스를 사용하여 두 개체가 동일한지 여부를 알 수 있지만 개체 간의 차이를 알 수는 없습니다.각 속성 값을 비교하여 반사를 사용할 수 있습니다.
그러나 다른 접근 방식은 이러한 인스턴스를 텍스트 형식으로 직렬화하고 결과 문자열(XML, JSON 등) 내부의 차이를 비교하는 것으로 구성될 수 있습니다.
언급URL : https://stackoverflow.com/questions/4951233/compare-two-objects-and-find-the-differences
반응형
'itsource' 카테고리의 다른 글
사용자가 WPF로 작성된 응용 프로그램의 최상위 창 크기를 조정하지 못하게 하는 가장 좋은 방법은 무엇입니까? (0) | 2023.05.07 |
---|---|
.gitignore의 댓글? (0) | 2023.05.07 |
Angular-cli 프로젝트에 부트스트랩을 추가하는 방법 (0) | 2023.05.07 |
푸시되지 않은 깃 커밋 제거 (0) | 2023.05.07 |
mongoose의 많은 부분을 업데이트합니다. (0) | 2023.05.07 |