[英]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.