c# - 是否可以获得作为`params object []`传递的变量名称?
问题描述
我想知道,是否可以通过 获取传递给方法的变量名称params object[] values
?
方法的签名如下所示:
public static void ExecuteSafely(
Action callback,
string command,
params object[] values)
{
// code here
}
我试图用 获取值nameof(values[index])
,但它告诉我:
表达式没有名称。
这样做的目的是为 SQL 命令动态添加参数,如果我可以根据params的名称添加它们,传递的参数会更容易和更少,但是这些参数的数量应该是可变的。
你能推荐任何解决方案或其他方法吗?
解决方案
不,那是不可能的。nameof
是一个编译时功能,您希望在运行时获得变量的名称(可以动态创建一个数组)。
如果名称对您很重要,请使用 aDictionary<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"));
推荐阅读
- automation - 如何创建一个 gitlab 机器人来自动处理问题
- r - 连接具有不同行数和列名的数据表
- post - 无法通过团队发送附件(图像等)传出 webhook 到 web 服务
- python - 在 Python 中将 int 数组的值更改为 NaN (ValueError)
- html - 间距和对齐文本
- angular - Angular 在 Firefox 中为日期格式抛出错误
- c# - 如何启动线程以获得最小延迟
- python - 无法在 python selenium 中找到链接元素
- spring - 未分类的 SQLException;SQL 状态 [null]; 错误代码[0];错误; 嵌套异常是 java.sql.SQLException: Error
- javascript - 时刻格式方法比本地日期早 1 天