[英]using Inheritance with generics
假設我有一個基礎課
class Document
{
//some properties
}
和兩個派生類:
public class Order:Document
{
//some properties
}
public class Request:Document
{
//some properties
}
現在我想制作一個具有服務層的分層應用程序。 我也想要一個基本的服務層接口,例如:
public interface IBaseService<T> where T:Document
{
IList<T> GetAll();
}
我的圖層服務類實現了它:
public SaleService:IBaseService<Document>;
因此,我必須定義IList<Document> GetAll()
來實現基本服務,但我希望我的SaleService具有IList<Order> GetAll()
和IList<Request> GetAll()
方法,而不是IList<Document> GetAll()
。 我該怎么做?
您將需要使用不同的通用參數顯式實現IBaseService<T>
:
public class SalesService : IBaseService<Order>, IBaseService<Request>
{
IList<Order> IBaseService<Order>.GetAll()
{
//return orders
}
IList<Request> IBaseService<Request>.GetAll()
{
//return requests
}
}
已實現的方法僅通過接口可見,因此您必須進行強制轉換以調用它們,例如
IBaseService<Request> service = new SalesService();
IList<Request> request = service.GetAll();
您的客戶端代碼應該僅依賴於IBaseService<T>
接口,因此您不需要經常這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.