代码之家  ›  专栏  ›  技术社区  ›  John

抽象类继承的泛型接口的实例化问题

  •  0
  • John  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  2
  •   michauzo    7 年前

    它应该是这样的:

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

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