使用参数和扩展方法的 C#

发布于 2024-08-04 22:44:41 字数 710 浏览 7 评论 0原文

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

我发现当我使用 params 关键字创建扩展方法时,我得到“X 没有重载方法需要 2 个参数”。智能感知可以识别扩展方法,甚至知道它需要一个对象数组。

这是一些示例代码:

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];
}

这是一些调用它的示例代码(无济于事)

(new X()).EasyRetrieveSingle(1, 2);

Is the params keyword really not supported within extension methods?

I have found that when I create extension methods with the params keyword, that I get "No overloaded method for X takes 2 arguments". Intellisense recognizes the extension method and even knows that it needs an object array.

Here's some sample code:

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];
}

Here's some sample code that calls it (to no avail)

(new X()).EasyRetrieveSingle(1, 2);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

三岁铭 2024-08-11 22:44:41

您似乎缺少 params 关键字...

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

It looks like you're missing the params keyword...

public static DalRow EasyRetrieveSingle(this DalRow dalRow, params object[] parameters) 
千寻… 2024-08-11 22:44:41

您在方法声明中缺少 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);
    }
}

You're missing the params keyword in your method declaration.

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

This compiles and runs perfectly:

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

class Program
{
    static void Main()
    {
        new Program().Test(1, 5);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文