2013-04-21 5 views
0

누군가가 나를 도와 줄 수 있었으면 좋겠다.C# 코드 재사용 공용 클래스 Foo <T> 메서드 매개 변수

public class Foo<T> 

다른 클래스의 속성을 통해 반복하는 것이 유일한 방법입니다. 변화하는 정의 된 속성의 양의 약 20 종류가 있습니다

public class Bar { 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

public class Shirt { 
    public string Color { get; set; } 
    public string Size { get; set; } 
    public string Brand { get; set; } 
} 

public class Pants { 
    public string Color { get; set; } 
    public string Waist { get; set; } 
    public string Length { get; set; } 
    public string Inseam { get; set; } 
} 

그리고 공용 클래스 푸의 방법은 다음과 같습니다

같은라는 각각의 클래스가 Foo의 차에 들어갈 예정이다

public class Foo<T> { 
    public string FooMethod(T before, T after /* other variables? */) { 
     // compare before & after 
    } 
} 
메서드를 두 번 반복하지만 속성 값은 서로 다릅니다. 2 & "BarBar"을 수의 ID & 이름 후 1 & "Bar" 동안 Bar 그래서 Bar의 ID & 이름 이전이 될 수 있습니다.

여기에서 의 각 속성을 &보다 먼저에 비교하기 위해 다른 작업이 수행됩니다. 그러나 각 클래스의 속성 수가 다양하기 때문에 딜레마가있는 한 가지 방법 만 사용하려고합니다.

+2

단어 "생성자"를 너무 자주 사용하지만 생성자가 없습니다. "생성자"대신 "속성"을 사용 하시겠습니까? – alex

+0

예, 내 말씨가 없습니다. 답안을 작성하고 답변 해 주셔서 감사합니다. – DisplayName13579

답변

0

FooMethod에서 여러 유형의 객체를 비교하려는 경우 모든 클래스 (Bar, Shirt, Pants ...)에서 Equals 및 GetHashcode 메소드를 대체하고 비교할 수 있습니다. 그렇게하면 FooMethod는 before.Equals(after)으로 전화하여 비교할 것입니다.