[英]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.