abstract继承泛型Interface的实例化问题class
Instantiation issue of generic Interface inherited by abstract class
我正在尝试设计一个可以 handle/use 多个数据库的应用程序,我认为将所有内容封装在接口下是个好主意,但我似乎偶然发现了第一种方法
我的界面是:
interface IConnect<T>
{
T dbConnection(String dbConnectionString);
}
我的摘要 Class 是:
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>
那么我可以使用这个实现还是不行?
它应该是这样的:
IConnect<SQLiteConnection> sqliteConObj = new SQLiteSpecialConnect();
SQLiteConnection connection = sqliteConObj.dbConnection("SomeConnectionString");
问题是您立即调用方法,所以 return 类型是 SQLiteConnection
我正在尝试设计一个可以 handle/use 多个数据库的应用程序,我认为将所有内容封装在接口下是个好主意,但我似乎偶然发现了第一种方法 我的界面是:
interface IConnect<T>
{
T dbConnection(String dbConnectionString);
}
我的摘要 Class 是:
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>
那么我可以使用这个实现还是不行?
它应该是这样的:
IConnect<SQLiteConnection> sqliteConObj = new SQLiteSpecialConnect();
SQLiteConnection connection = sqliteConObj.dbConnection("SomeConnectionString");
问题是您立即调用方法,所以 return 类型是 SQLiteConnection