所以,我有一个实体接口,要求他们公开他们的身份。
public interface IEntity<TIdentity> {
public TIdentity Id { get; }
}
现在我需要能够比较两个实体,但我不能依赖 and 的默认实现,Equals
因为GetHashCode
实体应该通过它们的身份进行比较,而不是整体签名。由于实现的每个类都IEntity<'1>
应该具有可比性,因此我考虑IEquatable<'1>
直接在实体接口上声明。
嗯..那行不通。当我IEquatable<'1>
在IEntity<'1>
接口上声明时,强制实现类来实现以下内容:
public bool Equals(IEntity<'1> other)
代替
public bool Equals(TypeImplementingIEntity other)
因此,在调用Equals
两个实体时,运行时会返回,Equals(object obj)
因为提供的方法上的参数类型IEquatable<'1>
与实际类型不匹配!做什么?