抽象类继承的通用接口的实例化问题

时间:2017-08-17 06:27:33

标签: c# sqlite generics interface abstract

我正在尝试设计一个可以处理/使用多个数据库的应用程序,我认为将所有内容封装在Interfaces下是一个好主意,但似乎我偶然发现了第一个方法 我的界面是:

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>

我可以使用此实现还是不行?

1 个答案:

答案 0 :(得分:2)

它应该是这样的:

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

问题是你正在立即调用该方法,因此返回类型是SQLiteConnection