에IEquatable 따라서, ID을 노출해야하는 엔티티에 대한 인터페이스가 있습니다. 실체가 정체성 및 전반적인하지 서명으로 비교해야하기 때문에인터페이스
public interface IEntity<TIdentity> {
public TIdentity Id { get; }
}
지금 내가 Equals
및 GetHashCode
의 기본 구현에 의존 할 수없는 서로 두 기관을 비교할 수 있어야하지만, . IEntity<'1>
을 구현하는 모든 클래스는 비교 가능해야하므로 엔티티 인터페이스에서 직접 IEquatable<'1>
을 선언 할 것을 고려했습니다.
음 .. 그게 작동하지 않습니다. 내가 IEntity<'1>
에 IEquatable<'1>
를 선언 할 때 인터페이스가 다음 구현하는 클래스를 구현 적용 : 그래서 두 기관에 Equals
호출에 대신
public bool Equals(TypeImplementingIEntity other)
의
public bool Equals(IEntity<'1> other)
, 런타임은 Equals(object obj)
다시 참조하기 때문에 유형 IEquatable<'1>
에서 제공하는 메소드의 인수가 실제 유형과 일치하지 않습니다. 뭐라구?
을 [이]에 따르면 (http://stackoverflow.com/questions/371328/why-is-it-important-to- override-gethashcode-equals-method-over-over 일 때)'GetHashCode()'도 역시 오버라이드하는 것이 중요하다. –
네, 그래야하지만,이 질문에 관한 것이 아니기 때문에 나는 언급하지 않았습니다. –