实例化问题通过抽象类

问题描述:

我试图设计可控制/使用多个数据库的应用程序继承,我认为这将是封装在接口一切是个好主意,但它似乎我已经无意中发现的第一个方法 我的接口是:实例化问题通过抽象类

interface IConnect<T> 
    { 
     T dbConnection(String dbConnectionString); 
    } 

我的抽象类是:

abstract class SqliteConnect :Iconnect<SQLiteConnection> 
    { 
     public abstract SQLiteConnection dbConnection(String dbConnectionString); 
    } 

的具体实施是:

class SQLiteSpecialConnect:SqliteConnect 
    { 
     public override SQLiteConnection dbConnection(String fileToConnect) 
     { 
      return new SQLiteConnection("Data Source=" + fileToConnect); 
     } 
    } 

但是,当我尝试实例化它,我得到

Iconnect<SQLiteConnection> sqliteConObj= new SQLiteSpecialConnect().dbConnection("SomeConnectionString"); 

cannot implicitly convert type System.Data.SQLite.SQLiteConnection to Iconnect<System.Data.SQLite.SQLiteConnection>

所以我可以用这个实现,或者是没有去?

+2

什么是“新SQLiteSpecialConnect:SqliteConnect()”?它不应该只是“新的SQLiteSpecialConnect()”吗?乍一看,其他一切看起来都很好。 – michauzo

+0

坏复制粘贴... – John

+2

是啊,当然'SQLiteConnection = iConnect的'... - 使用'iConnect的 sqliteConObj =新SQLiteSpecialConnect()'然后'sqliteConObj.dbConnection( “SomeConnectionString” )' – Corak

它应该是这样的:

IConnect<SQLiteConnection> sqliteConObj = new SQLiteSpecialConnect(); 
SQLiteConnection connection = sqliteConObj.dbConnection("SomeConnectionString"); 

问题是你要立即调用该方法,从而返回类型为SQLiteConnection

+0

以及这个工程...:)... – John

+0

@约翰 - 如果是这样,你可能想考虑接受这个答案。 – Corak