【问题标题】:Argument type 'string' is not assignable to parameter type 'System.Collection.Generic.KeyValuePair<string,object>'参数类型“字符串”不可分配给参数类型“System.Collection.Generic.KeyValuePair<string,object>”
【发布时间】:2014-03-10 14:23:20
【问题描述】:

所以我正在重构一个旧应用程序,并创建了一个新的 Sql Helper 类来接管数据库工作。到目前为止,它只包含一种方法,我不知道为什么会收到标题中提到的错误。

代码如下:

    public class Helper
{
    private static string ConnectionString
    {
        get
        {
            return ConfigurationSettings.AppSettings["ConnectionString"];
        }
    }


    public static DataSet ExecuteDataset(string commandText,params KeyValuePair<string,object>[] paramsList)
    {
        if (paramsList.Length > 0)
            return Helper.ExecuteDataset(ConnectionString, commandText, paramsList.Select(s => new MySqlParameter(s.Key, s.Value)).ToArray());

        return Helper.ExecuteDataset(ConnectionString, commandText);
    }
}

【问题讨论】:

  • 将错误放在问题中而不是标题中。
  • 您在哪一行得到错误?我会想象这两条ExecuteDataset 行,因为您传递的参数多于方法接受的参数(尽管您已经制作了第二个参数参数,但是您传递了一个字符串作为第二个参数!)...另外,您是递归的打电话不是吗? 长话短说,即使你编译了这个,我的预测是堆栈会爆炸......
  • 是的,我在 ExecuteData 行收到错误,是的,调用是递归的。

标签: c# mysql visual-studio-2010 resharper


【解决方案1】:

ExecuteDatasetparamsListKeyValuePairs,但您传入的是字符串。

我不确定您的目标是什么,但此时您有无限递归,因为每条路径在返回之前都会递归调用 ExecuteDataset

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-18
    • 2021-07-02
    • 2021-08-20
    • 2021-06-16
    • 2021-09-07
    • 2021-09-06
    • 1970-01-01
    • 2018-04-05
    相关资源
    最近更新 更多