-1
我在vb.net中使用callbyname來調用具有參數的另一個函數。但是參數順序只在運行時才知道。所以我想通過它的名字來定義參數,而不是args數組中的位置。函數CallByName的參數不正確
Private Sub mainSub()
Dim argArr as Object()
ReDim Preserve argArr(1)
argArr(0) = "argTwo:= "Argument Two""
argArr(1) = "argOne:= "Argument One""
callbyname(auxSub, CallType.Method, argArr)
End Sub
Private Sub auxSub(ByVal argOne as String, ByVal argTwo as String)
MsgBox("First Argument = " & argOne)
MsgBox("Second Argument = " & argTwo)
End Sub
在這個例子中在MessageBox將顯示以下信息:
第一個參數 - argTwo:= 「參數兩個」
第二個參數 - argOne:= 「參數的一個」
而不是:
第一個參數 - 論證一個
第二個參數 - 參數兩個這樣做將是使用你的函數的參數名稱爲重點的字典,並從argArr賦值的
您將不得不使用反射。 ParameterInfo提供參數名稱。你*真正想做這件事的機率應該很低。 –
爲什麼你認爲你首先需要做到這一點?這可能是合法的,但我看到不止一個人無緣無故嘗試這種事情。 – jmcilhinney
原因是用戶可以用他想要的項目和順序創建一個用戶窗體。而表單控件是該函數的參數。我會盡力瞭解更多關於反射功能。謝謝! – marceloguaycurus