繁体   English   中英

是否有可能将变量的名称作为`params object []`传递?

[英]Is it possible to get name of variables passed as `params object[]`?

我想知道,如果有可能通过params object[] values获取传递给方法的变量的名称?

方法的签名如下所示:

public static void ExecuteSafely(
    Action callback,
    string command,
    params object[] values)
{
    // code here
}

我试图用nameof(values[index])获取值,但它告诉我:

表达式没有名称。

这一点的关键是动态地向SQL命令添加参数,如果我可以根据参数的名称添加参数,那么传递它会更容易,参数更少,但这些参数的数量应该是可变的。

你能推荐任何解决方案或其他方法吗?

不,那是不可能的。 nameof是一个编译时功能,您需要运行时的变量名称(可以动态创建一个数组)。

如果名称对您很重要,请使用Dictionary<string, object>或使用C#7命名元组

public static void ExecuteSafely(Action callback, string command, 
    params (string name, object value)[] commandParameters)
{
    foreach ((string Name, object Value) commandParameter in commandParameters)
    {
        string name = commandParameter.Name;
        object value = commandParameter.Value;
        // ...
    }
}

以这种方式调用它:

ExecuteSafely(yourAction, "CreateUser", ("UserName", "Tim Schmelter"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM