1 回答

TA贡献1796条经验 获得超7个赞
如错误信息所示:
There is no boxing conversion or type parameter conversion from 'TKey' to 'System.IEquatable'
在抽象类级别再次指定约束将解决问题:
public abstract class BaseEntity<TKey> : IIdentifiable<TKey> where TKey : IEquatable<TKey>
{
public TKey Id { get; set; }
}
public interface IIdentifiable<TKey> where TKey : IEquatable<TKey>
{
TKey Id { get; set; }
}
那是因为抽象类中的 Tkey 与接口中的 TKey 不同,因此您应该再次指定约束以使其成为相同的装箱类型。
例如,此代码也将有效:
public abstract class BaseEntity<TKey2> : IIdentifiable<TKey2> where TKey2 : IEquatable<TKey2>
{
public TKey2 Id { get; set; }
}
public interface IIdentifiable<TKey> where TKey : IEquatable<TKey>
{
TKey Id { get; set; }
}
- 1 回答
- 0 关注
- 212 浏览
添加回答
举报