我想知道是否有可能通过params object[] values
传递给方法的变量名?
方法的签名如下:
public static void ExecuteSafely(
Action callback,
string command,
params object[] values)
{
// code here
}
我试图通过nameof(values[index])
获取值,但是它告诉我:
表达式没有名称。
这样做的目的是向SQL命令动态添加参数,如果我可以基于 params 的名称添加参数,则传递参数会更容易且传递的次数更少,但是这些参数的数量参数应该是可变的。
您能为此推荐任何解决方案或其他方法吗?
答案 0 :(得分:9)
不,那不可能。 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"));