簡體   English   中英

從 XML 中讀取的可配置方法在調用時用於 VB.NET

[英]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}")
  • element.Thirdelement() 的值為 SendWait

我知道 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM