类函数返回不同的对象

本文关键字:对象 返回 类函数 | 更新日期: 2023-09-27 18:37:00

简而言之,我正在编写一个类处理程序来处理我为自己编写的一些软件的数据库集成,但是由于并不总是与远程数据库的连接,我想我会使用 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 列表是 mysqlparameters。

有谁知道我如何实现这一目标? 我尝试使用 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;
        }
    }

类函数返回不同的对象

一个更干净的解决方案是

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

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