簡體   English   中英

泛型-將實例作為基本類型傳遞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM