[英]Configurable method read from XML used in VB.NET on calling
我有一個關於如何使用可配置的方法名稱的問題。 例如
1.我有一個 xml 文件,其中包含如下所示的三個元素:
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<element attribute1="a" attribute2="b" attribute3="Send" />
</root>
2.我正在使用一個列表(我制作了一個包含三個元素的 class 並創建了一個該類的 object 類型列表)來存儲 xml 文件中的元素。
3.然后使用 For 語句:對於在 GetList 中作為 ClassList 的每個元素,我想改為從 xml 文件調用可配置方法:
理論上而不是 SendWait 我想調用 attribute3 的值(值為 SendWait)。
而不是 SendKeys.SendWait("{ENTER}") 這樣的東西:
SendKeys.element.Thirdelement()("{ENTER}")
我知道 attribute3 可能有 2 個值:Send 或 Sendwait 我應該使用 if 語句,還是有可用的解決方案?
If element.ThirdElement() = "SendWait" Then
SendKeys.SendWait("{ENTER}")
Else
SendKeys.Send("{ENTER}")
我是編程新手,所以如果上面的陳述有誤,請原諒!
LE:我有一個新的 class ListClass1,它包含三個成員和屬性:
firstElement()
secondElement()
thirdElement()
我正在使用這個 class 來存儲 xml 文件中的數據
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<element attribute1="a" attribute2="b" attribute3="Send" />
</root>
因此,在我將值添加到列表后,例如: element.ThirdElement()將具有來自 attribute3(“發送”)的值。 element.secondElement()也將保留 attribute2 的值,依此類推。
您可以使用反射來完成任務。 首先定義一個 class 持有你的方法:
Public Class MethodsToExecute
Public Sub Send(par1)
SendKeys.Send("{ENTER}")
End Sub
Public Sub SendWait(par1)
SendKeys.SendWait("{ENTER}")
End Sub
End Class
然后創建一個 Sub 來處理:
Public Shared Sub ExecuteMethodByName(ObjectToInvoke As Object, MethodName As String, ParamArray Parameters() As Object)
Dim m As Reflection.MethodInfo = ObjectToInvoke.GetType.GetMethod(MethodName)
m.Invoke(ObjectToInvoke, Parameters)
End Sub
現在執行
dim mte as new MethodsToExecute
遍歷 xml 文件並執行
ExecuteMethodByName(mte,element.ThirdElement(), element.firsElement(),element.secondElement())
問題是解決方案依賴於屬性順序而不是它們的名稱,但是通過更廣泛的反射使用你也可以處理它。 參數數組示例
可以理解嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.