gpt4 book ai didi

c# - 是否可以获取作为 `params object[]` 传递的变量名称?

转载 作者:行者123 更新时间:2023-11-30 13:43:41 24 4
gpt4 key购买 nike

我想知道,是否可以通过 params object[] values 获取传递给方法的变量的名称?

方法的签名如下所示:

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

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

Expression does not have a name.

这样做的目的是为SQL命令动态添加参数,如果我可以根据params的名称添加它们,那么传递的参数会更容易,传递的参数更少,但是那些参数的数量参数应该是可变的。

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

最佳答案

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

如果名称对您很重要,请使用 Dictionary<string, object>C#7 a named tuple :

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"));

关于c# - 是否可以获取作为 `params object[]` 传递的变量名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52439968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com