Правильно ли сказать, что в моем 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) { ... }
}
Обратите внимание, что я помещаю хранилище как свойство, а в своем классе обслуживания я выставляю это свойство.
Поэтому, если вам нужно добавить, удалить или получить какой-либо объект в хранилище, я могу получить к нему доступ через это свойство.
Каково ваше мнение?
Правильно ли это?