2017-12-19 8 views
0

은 이제 내가이 코드가 있다고 가정 해 봅시다 일반적인 매개 변수로 인터페이스를 가진 EqualityComparer를 호출하는 의미가 않습니다.그것은

코드가 라이브러리에 있기 때문에 Realisation에 액세스 할 수 없습니다. IInterface의 동등 비교자를 호출해야한다면 여기 EqualityComparer<IInterface>.Default에 전화하는 것이 맞습니까? 구현시 Equals(IInterface other)을 사용할 예정입니까? 또는 평등 실행이 수업 외부에 있어야합니까? 맞춤 IEqualityComparer<IInterface>을 제공해야합니까?

편집

  • 추가 Equals(object obj)GetHashCode() 무시
+0

정확한 설정과 테스트로 더미 클래스 라이브러리를 만들고 알아보십시오. 이것은 곧장 앞으로해야합니다. – CodingYoshi

답변

0

더 나은 당신이 Single responsibility principle 만족, 당신 클래스 외부에서 비교자를 넣어 그것을 제안 - 클래스를 여러 것보다 하나의 작업 raher을 (그것은 슈퍼 클래스가되어서는 안됩니다)와 (Open Close Principle)Extend your class rather than modifying your class입니다. 그러면 클래스에서 seprate 클래스 rahter에서 동일한 코드를 유지해야합니다. 당신은, 오히려 IEquatable의 사용을보다 더 클래스 코드에 액세스 할 수 Equals & GetHashcode 같은 기본 객체 클래스 메서드를 재정의


한 가지 더있는 경우 (이 내 제안이다).

+0

@David - 감사합니다. updatd .. 완전히 잊어 버렸습니다 –

+0

그래, 나는 'Equals' & co override를 언급하지 않았다. – gfache

+0

@gfache 추가됨 - 그냥 제안하지만 IEquitable 인터페이스 구현을 위해가는 경우 새 클래스를 만들어 거기에서 구현하고 작업을 균등하게 수행하십시오 –