1
这不应该很难回答,但我非常绝望和困惑。我做了执行从数据库读取查询的接口实现接口的MySql和SQlite类
interface IDatabase
{
DataTable ExecuteReaderCommand(IDbCommand command);
IDbCommand GetNewCommand();
}
接下来,我在接口上面创建了两个不同的类implemetnig。
class MysqlDatabase : IDatabase
{
public DataTable ExecuteReaderCommand(MySqlCommand command)
{
DataTable dt = new DataTable();
// ... read db
return dt;
}
public MySqlCommand GetNewCommand()
{
cnn.Open();
return cnn.CreateCommand();
}
}
而且
class SQLiteDatabase : IDatabase
{
String dbConnection;
SQLiteConnection cnn;
public DataTable ExecuteReaderCommand(SQLiteCommand command)
{
DataTable dt = new DataTable();
// ... read db
return dt;
}
public SQLiteCommand GetNewCommand()
{
cnn.Open();
return cnn.CreateCommand();
}
}
但我得到的错误,这些类不实现接口IDatabase:
MysqlDatabase does not implement interface member 'Database.GetNewCommand()'
MysqlDatabase.GetNewCommand() cannot implement 'Database.GetNewCommand()' because it does not have the matching return type of 'System.Data.IDbCommand'.
SQLiteDatabase does not implement interface member Database.ExecuteReaderCommand(System.Data.IDbCommand)
SQLiteDatabase does not implement interface member 'Database.GetNewCommand()'. SQLiteDatabase.GetNewCommand() cannot implement Database.GetNewCommand() because it does not have the matching return type of 'System.Data.IDbCommand'.
当我看就SQLiteCommand
和MySqlCommand
他们都实现了IDbCommand
。
如何在通用界面下使用这些类,以便轻松切换它们?
我非常感谢任何答案。
选项1正是我想做的事。你能指点我正确的方向怎么做?我需要用于MysqLCommand和SQLiteCommand的通用界面。我认为这是IDbCommand。 – 2012-07-24 17:31:35