你怎么能在VB.Net中评估字符串中引用的控件的值?假设你有一个包含一些字母数字内容的文本框N和它在一个字符串变量中引用这样的:如何在运行时评估包含对Windows窗体控件引用的字符串?
Dim s As String = """Hello "" & N.Text & ""!"""
我希望能够重新评估s变量的内容,其他地方的代码(其中有没有N的存在的直接知识),例如,像这样:
Dim e As String = Eval(s)
这是不可能与VB.Net;没有这样的Eval功能可用。我在网上看到了一些似是而非的几乎解决方案,如使用旧的COM ScriptControl的:
Private Shared _scriptControl As MSScriptControl.ScriptControl = New ScriptControl()
_scriptControl.Language = "VBScript"
Dim e As String = _scriptControl.Eval(s)
然而,参考到Windows窗体控件的N.Text属性是陌生的ScriptControl对象,因此它抛出一个错误。
是否有任何其他快速解决方案不需要购买第三方组件?
您是否需要考虑整个表达式,还是只是担心评估标识变量/控件的字符串?后者使用反射应该相当简单。 – Craig
听起来像一个普通的普通字符串变量。预先解决内容,一旦 – Plutonix
它需要是一个字符串?如果不是的话,那么对lambda表达式的委托将是优选的,例如, 'Dim s As Func(Of String)= Function()“Hello”&N.Text&“!”' –