我有一些包含其他页面的网页,我需要检查页面中是否已声明变量(字符串)。
我正在探索try catch,最后,但我总是得到编译器错误,说变量不会退出。
我脑子里的语法是:if variable(exists) then
do something
else
do nothing
end if
从我发现的是,如果变量没有在任何地方定义,这甚至都不会编译。我有点知道,我只是希望找到一些工作。 :/
答案 0 :(得分:1)
我所知道的唯一方法是使用反射...... 这不适用于subs / functions中定义的变量......
Friend Function VariableExists(ByVal variableName As String) As Boolean
For Each tField As FieldInfo In Me.GetType.GetFields
If tField.Name.ToLower() = variableName.ToLower() Then
Return True
End If
Next
Return False
End Function
这里的Cose未经测试,可能包含轻微错误。可以把它想象成伪代码。
答案 1 :(得分:1)
如何添加一个可以在需要以特定方式处理的页面中使用的简单接口,而不是声明变量,那么您可以测试该页面是否实现了接口?
例如:
Public Interface IMySpecialInterface
End Interface
在您想要特殊行为的页面中:
Public Page MySpecialPage
Implements IMySpecialInterface
End Page
在处理页面的代码中:
If TypeOf Me.Page Is IMySpecialInterface Then
答案 2 :(得分:0)
使用界面怎么样:
Public Interface ISpecialProp
Property SpecialProp() As String
End Interface
然后你可以测试,如果一个类使用这个代码实现了接口:
Dim spec = TryCast(obj, ISpecialProp)
If spec IsNot Nothing Then
Console.WriteLine(spec.SpecialProp)
End If