我正在尝试设计一个可以处理/使用多个数据库的应用程序,我认为将所有内容封装在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>
我可以使用此实现还是不行?
答案 0 :(得分:2)
它应该是这样的:
IConnect<SQLiteConnection> sqliteConObj = new SQLiteSpecialConnect();
SQLiteConnection connection = sqliteConObj.dbConnection("SomeConnectionString");
问题是你正在立即调用该方法,因此返回类型是SQLiteConnection