有许多实体继承自BaseEntity<TKey>. 需要对实体执行的操作完全相同,因此DataService<TEntity, TKey> where TEntity: BaseEntity<TKey>. 使用键时类方法出现错误:
这是同一类型,但编译器不想识别它。如何解决?
导致错误的代码示例:
public Task<BaseEntity<TKey>> Get(TKey id)
{
return DataService.FirstOrDefaultAsync(u => u.Id == id);
}
限制where TKey : IComparable, IEquatable<TKey>不能修复错误

编译器识别出它们是同一类型。它说这种类型可能没有
==.您可以改用该方法
Equals,该方法必须在所有具有运算符覆盖的类型上被覆盖==。如果我们在谈论引用类型,那么通过引用进行比较是必要的
ReferenceEquals。您还可以向 TKey 添加约束 -IComparable或IEquatable使用这些接口的方法进行比较。