2013-04-09 3 views
0

에 대해 일반 클래스에 대해 IEqualityComparer를 구현하는 방법이 있습니까? IEqualityComparer를 구현하는 # 일반 클래스 T

내가 시도 : 그래서 다음 MyGenericClass가 제네릭으로 3 개 인수를하기 때문에, 잘못

public class MyComparer : IEqualityComparer<MyGenericClass> 

, 하나

나는 종류에게를 모르기 때문에, 잘못
public class MyComparer : IEqualityComparer<MyGenericClass<A, B, C>> 

, 기원전. 그래서

public class MyComparer<MyGenericClass<A, B, C>> : IEqualityComparer<MyGenericClass<A, B, C>> 

이 잘못되었습니다. 이것을 구현하는 방법이 있습니까? 감사합니다

답변

6

당신은 가까운

public class MyComparer<A, B, C> : IEqualityComparer<MyGenericClass<A, B, C>> 

사이드 노트이며, 사람을 도움이되지 않는 것들의 A, B 및 C의 이름을 지정하지 마십시오. 표준 명명 규칙은 T<SomethingDescriptive>입니다. EF의 경우 TEntity 일 수 있고, MVC 또는 MVVM의 경우 TModel 또는 TViewModel 일 수 있습니다.

+2

트릭은 실제로 그런 식으로 구현 될 것입니다 ... –

+0

오케이, 나는 결코 A, B, C로 다시는 이름을 지을 것이라고 약속하지 않습니다. 공용 클래스 MyComparer : BTW 덕분에, 나는이 확실히 당신이 당신이 원하는 것을 전달하고 있는지 확인하는 유형의 제약 조건을주의하는 것이 좋을 것 –

+1

: 그것을 알아낼 절대 IEqualityComparer > 어디 A : SomeInterface 여기서 B : SomeOtherInterface C : AThirdInterface 이들은 인터페이스, 기본 클래스 또는 새 {}/클래스 일 수 있습니다. Intellisense 및 캐스트없이 속성에 액세스하는 데 매우 유용합니다. – DSlagle