我建议有接口 IEntity 像这样:
IEntity
public interface IEntity<TKey> where TKey : IEquatable<TKey> { TKey Id { get; set; } }
所有实体都应实现此接口,然后您就可以实现 IRepository 像这样:
IRepository
public interface IRepository<TEntity, in TKey> where TEntity : IEntity<TKey> where TKey : IEquatable<TKey> { (...) Task<TEntity> GetByIdAsync(TKey id); void Insert(TEntity entity); (...) }
使用泛型将帮助您入门。 TId 指定id的类型。
TId
public class EntityBase<TId> { public TId Id {get; set;} } public interface IRepository<TId> { Task<PayoutResult> Insert(EntityBase<TId> entity); bool EntityExists(EntityBase<TId> entity); }
我个人讨厌通用存储库。为什么?它是一个滑坡。我觉得这是一个糟糕的设计选择。我们有一个应用程序,这是一个维护的噩梦。通用存储库不遵循接口 隔离原则 无论是。
入门10