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 關注
- 190 瀏覽
添加回答
舉報