C#使用参数和扩展方法

C#使用参数和扩展方法,c#,extension-methods,C#,Extension Methods,扩展方法中真的不支持params关键字吗 我发现,当我使用params关键字创建扩展方法时,我得到了“X的无重载方法包含2个参数”。Intellisense识别扩展方法,甚至知道它需要一个对象数组 下面是一些示例代码: public static DalRow EasyRetrieveSingle(this DalRow dalRow, object[] parameters) { Dictionary<string, object> dic = new Dictionar

扩展方法中真的不支持params关键字吗

我发现,当我使用params关键字创建扩展方法时,我得到了“X的无重载方法包含2个参数”。Intellisense识别扩展方法,甚至知道它需要一个对象数组

下面是一些示例代码:

public static DalRow EasyRetrieveSingle(this DalRow dalRow, object[] parameters) 
{
    Dictionary<string, object> dic = new Dictionary<string, object>();
    for (int i = 0; i < parameters.Length; i += 2)
        dic.Add(parameters[i].ToString(), parameters[i + 1]);

    List<DalRow> list = DalRow.RetrieveByFieldValues(dalRow.Structure, null, dic).Cast<DalRow>().ToList();
    if (list.Count == 0) return null;
    return list[0];
}

看起来您缺少
params
关键字

public static DalRow EasyRetrieveSingle(this DalRow dalRow, params object[] parameters) 

方法声明中缺少
params
关键字

public static DalRow EasyRetrieveSingle(
    this DalRow dalRow, params object[] parameters)
                          ↑
这可以完美地编译和运行:

static class Extensions
{
    public static void Test(this Program program, params object[] args) { }
}

class Program
{
    static void Main()
    {
        new Program().Test(1, 5);
    }
}

对我有用。您的代码片段中似乎缺少
参数
?哇!这一定是他妈的冷得要命。我为这个问题道歉,不用担心。请不要更改标题,尽管你感到尴尬,但它会帮助其他人搜索相同的问题
static class Extensions
{
    public static void Test(this Program program, params object[] args) { }
}

class Program
{
    static void Main()
    {
        new Program().Test(1, 5);
    }
}