2016-03-10 158 views
1

是否可以獲取作爲參數傳遞的變量的名稱?如何獲取作爲參數傳遞的變量的名稱

當你問我解釋爲什麼我需要這個,這裏是我的解釋。我正在使用硒構建測試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)。我想要減少需要傳遞給函數的變量量。

+1

雖然有可能,但只有極少數情況下有用。可以更詳細地解釋你的*問題*知道傳遞的變量的名稱不應該是必需的。 – nvoigt

+1

@nvoigt這可能嗎?現在你已經注意到了...... – atlaste

+3

你可以使用[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

回答

0

嘗試使用

int par; 
nameof(int); // 'par' 

nameof reurn參數的名稱。

+1

OP *在他們的第一個代碼示例中使用*'nameof'。他們不太可能不知道它的存在。 –

相關問題