我目前正在为新应用程序开发数据访问层,它不是一个大型应用程序,所以我决定采用Dao模式,将每个Model项目转换为Dao通过存储的查询将项目存储到数据库之前的项目
尽可能地使用通用接口和抽象类来消除重复操作,但现在我已经遇到了一些障碍。
我们所拥有的是Dao Conversion类的接口,如下所示:
internal interface IDaoConverter<TModel, TDao>
where TModel : ModelItem
where TDao : DaoItem
{
ToDao(TModel inModel);
inDao);
}
到目前为止这个工作正常并且适合它的功能,你在类定义中指定了Model类型和Dao类型它将被转换为(1-1关系),并且创建函数以匹配这些类型。这些Dao转换器的实例在工厂中进行,以便于检索。
我想要的下一件事是创建将使用它的数据访问类,我想以通用的方式设计它。
我之后要问Dao转换器工厂我想要一个可以处理特定类型的Model项目的Dao转换器,但到目前为止我找不到指定方法的方法。
public abstract class AbstractDataAccess<T> where T: ModelItem
{
protected IDaoConverter<T,?> Converter;
public void Init(IDaoConverter<T,?> inConverter)
{
Converter = inConverter;
}
}
我基本上希望能够用类中我想要的任何类型替换问号。由于这个原因,我现在不得不完全写出每个数据访问类。
答案 0 :(得分:0)
如果在初始化时给出转换器,则可以使方法访问DaoConverter摘要,并派生一个(可能是抽象的)类,该类具有表示Dao-Type的第二个类型参数。
public abstract class AbstractDataAccess<T, TDao> : AbstractDataAccess<T> where ...