[英]Generics - Passing instances as a base type
我目前正在為新應用程序開發數據訪問層,因為它不是大型應用程序,所以我決定采用Dao模式,將每個Model項目轉換為Dao項目,然后再通過存儲的查詢將其存儲到數據庫中。
盡可能多地使用通用接口和抽象類來刪除重復的操作,但現在遇到了一些障礙。
我們擁有的是Dao Conversion類的接口,如下所示:
internal interface IDaoConverter<TModel, TDao>
where TModel : ModelItem
where TDao : DaoItem
{
ToDao(TModel inModel);
inDao);
}
到目前為止,此方法運行良好並適合其功能,您可以在類定義中指定將要轉換為(1-1關系)的Model類型和Dao類型,並創建功能以匹配這些類型。 這些Dao Converter的實例都保存在工廠中,以使檢索更加容易。
我想做的下一件事是創建將使用該類的數據訪問類,並且我想以一種通用的方式來設計它。
我所追求的是一種向Dao Converter Factory詢問我是否想要可以處理特定類型的Model項的Dao Converter的方法,但是到目前為止,我還沒有找到指定此方法的方法。
public abstract class AbstractDataAccess<T> where T: ModelItem
{
protected IDaoConverter<T,?> Converter;
public void Init(IDaoConverter<T,?> inConverter)
{
Converter = inConverter;
}
}
我基本上希望能夠用我在課堂上想要的任何類型替換問號。 由於這個原因,我目前必須將每個數據訪問類完全寫出。
如果在初始化時提供了轉換器,則可以使方法訪問DaoConverter抽象,並派生一個(可能是抽象的)類,該類具有表示Dao-Type的第二個類型參數。
public abstract class AbstractDataAccess<T, TDao> : AbstractDataAccess<T> where ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.