说我的 IService 拥有 IRepository 所拥有的一切,以及更多一些具体的操作是正确的吗?
以下是代码:
public interface IRepository<T>
{
T Add(T Entity);
T Remove(T Entity);
IQueryable<T> GetAll();
}
public interface IUserService
{
//All operations IRepository
User Add(User Entity);
User Remove(User Entity);
IQueryable<User> GetAll();
//Others specific operations
bool Approve(User usr);
}
请注意,中的所有操作IRepository
也是IService
.
这个对吗?
如果是这样,最好做这样的事情:
public interface IUserService : IRepository<User>
{
bool Approve(User usr);
}
另一种选择是:
public interface IUserService
{
IRepository<User> Repository { get; }
//All operations IRepository
User Add(User Entity);
User Remove(User Entity);
IQueryable<User> GetAll();
//Others specific operations
bool Approve(User usr);
}
public class UserService : IUserService
{
private readonly IRepository<User> _repository;
public IRepository<User> Repository
{
get
{
return _repository;
}
}
//Others specific operations
public bool Approve(User usr) { ... }
}
请注意,我将存储库作为一个属性,并在我的服务类中公开这个属性。
因此,如果您需要在存储库中添加、删除或获取某些对象,我可以通过此属性访问它。
你有什么意见?这样做是否正确?