返回不同对象的类函数

时间:2012-06-11 20:15:31

标签: c# mysql sql-server-ce

简而言之,我正在编写一个类处理程序来处理我自己编写的某些软件的数据库集成,但是由于并不总是连接到远程数据库,我以为我会使用SQLCE来创建本地数据库缓冲区所以建立连接时,可以同步更改。

到目前为止,除参数外,它进展顺利。我想要调用的函数如下所示,但是这个函数抱怨无效的参数。

public Object run(string query, List<Object> dbparams = null)
    {
        if (MyDB.isConnected())
        {
            return MyDB.run(query, dbparams);
        }
        else
        {
            SqlCeCommand sql = _OfflineConnection.CreateCommand();
            sql.CommandText = query;
            if (dbparams.Count > 0)
            {
                sql.Parameters.AddRange(dbparams.ToArray());
            }
            return sql;
        }
    }

MyDB.run与else语句中的代码完全相同,除了mysql之外,它正在呻吟的是返回mydb.run,因为mydb类期望dbparams列表是mysql参数。

有谁知道我怎么能做到这一点?我试图使用LINQ进行转换但是失败了。

修改

目前我有以下工作,但我确信有更清洁的解决方案

public Object run(string query, List<Object> dbparams = null)
    {
        if (MyDB.isConnected())
        {
            List<MySqlParameter> mydbparams = null;
            for (int i = 0; i < dbparams.Count; i++)
            {
                mydbparams.Add((MySqlParameter)dbparams[i]);
            }
            return MyDB.run(query, mydbparams);
        }
        else
        {
            SqlCeCommand sql = _OfflineConnection.CreateCommand();
            sql.CommandText = query;
            if (dbparams.Count > 0)
            {
                sql.Parameters.AddRange(dbparams.ToArray());
            }
            return sql;
        }
    }

1 个答案:

答案 0 :(得分:2)

更清洁的解决方案是

mydbparams = dbparams.Cast<MySqlParameters>().ToList();

此外,您应该检查并处理dbparams的空条件。