1
所以,我有一個實體接口,要求他們公開他們的身份。IEquatable <'1>在接口
public interface IEntity<TIdentity> {
public TIdentity Id { get; }
}
現在我需要能夠比較兩個實體,其彼此,但我不能依靠Equals
和GetHashCode
默認的實現,因爲實體應由其身份,而不是整體的簽名進行比較。由於實現IEntity<'1>
的每個類都應該具有可比性,因此我想直接在實體接口上聲明IEquatable<'1>
。
那麼..不起作用。當我在IEntity<'1>
聲明IEquatable<'1>
接口強制執行類來實現如下:
public bool Equals(IEntity<'1> other)
代替
public bool Equals(TypeImplementingIEntity other)
所以在調用Equals
兩個實體,運行時指回Equals(object obj)
因爲類型的IEquatable<'1>
提供的方法參數與實際類型不匹配!做什麼?
根據[這](http://stackoverflow.com/questions/371328/why-is-it-important-to- override-gethashcode-when-equals-method-is-overridden),重寫'GetHashCode()'也很重要。 – 2014-10-10 03:20:07
是的,你應該,但這不是這個問題的原因,所以我沒有提到它。 – 2014-10-10 08:05:18