私の 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) { ... }
}
リポジトリをプロパティとして配置し、サービス クラスでこのプロパティを公開していることに注意してください。
したがって、リポジトリ内のオブジェクトを追加、削除、または取得する必要がある場合は、このプロパティを介してアクセスできます。
あなたの意見は何ですか?これを行うのは正しいですか?