如何获取作为参数传递的变量的名称
问题描述:
是否可以获取作为参数传递的变量的名称?如何获取作为参数传递的变量的名称
当你问我解释为什么我需要这个,这里是我的解释。我正在使用硒构建测试framweork。这里是我需要那个作为参数传递的变量名称的例子。
我有场页面对象:
[FindsBy(How = How.CssSelector, Using = "input[name='sample']")]
private IWebElement SampleButton { get; set; }
我一下就喜欢:
Click(SampleButton, nameof(SampleButton));
这里是点击功能的机构,你看到上面:
public void Click(IWebElement element, string elementName)
{
element.Click();
Logger.Log("Click: '{0}'", elementName);
}
结果:传递给函数的按钮被点击并在日志中文件我有 “点击:SampleButton”
现在我正在寻找如何改变点击功能,它可以竟被调用,如:
Click(SampleButton)
它看起来像:
public void Click(IWebElement element)
{
element.Click();
Logger.Log("Click: '{0}'", getNameOfVariableThatWasPassedToThisParameter(element));
}
getNameOfVariableThatWasPassedToThisParameter(element)
的预期结果将为string = "SampleButton"
我正在使用诸如SendKeys(SampleInput, nameof(SampleInput), valueToSet)
和它会设置值并记录它的设置。所以我只想摆脱即nameof(SampleInput)
。我想要减少需要传递给函数的变量量。
答
尝试使用
int par;
nameof(int); // 'par'
nameof reurn参数的名称。
+1
OP *在他们的第一个代码示例中使用*'nameof'。他们不太可能不知道它的存在。 –
虽然有可能,但只有极少数情况下有用。可以更详细地解释你的*问题*知道传递的变量的名称不应该是必需的。 – nvoigt
@nvoigt这可能吗?现在你已经注意到了...... – atlaste
你可以使用[Expression](https://msdn.microsoft.com/de-de/library/system.linq.expressions.expression(v = vs.110) .aspx)来做到这一点。例如,请参阅[this](http://stackoverflow.com/questions/793571/why-would-you-use-expressionfunct-rather-than-funct)。不过,我强烈怀疑你有一个XY问题。描述你的问题,而不是将解决方案视为理所当然,你可能会得到更好的答案。 – nvoigt