說我的IService擁有IRepository所具有的一切,以及更多的特定操作是正確的嗎?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) { ... }
}
注意,我把倉庫的財產,在我的服務課上揭露這個屬性。
因此,如果您需要添加,刪除或獲取存儲庫中的某個對象,我可以通過此屬性訪問它。
您的意見是什麼? 這樣做是否正確?
爲了防止你的問題被標記,並可能已經刪除,避免要求主觀題哪裏... 每一個答案都同樣有效:「你最喜歡什麼______」 與問題一起提供你的答案,你期望更多的答案:「我用______爲______,你用什麼?」 沒有實際的問題有待解決:「我很好奇,如果別人覺得我喜歡。」 我們被問到一個開放式的,假設的問題:「如果______發生了什麼?」 這是一個僞裝成一個問題的聲音:「______糟透了,我是對嗎?」 – cadrell0
也許我不知道如何提出這個問題。我想知道的是如何公開我的存儲庫的方法。如果我將它們公開爲服務中的屬性,或者創建訪問存儲庫方法的方法。 – ridermansb
@ cadrell0:他提供了3種可能的做事方式,並詢問他應該使用哪一種,不是出於主觀原因,而是出於客觀原因。 –