Visual Basic .NET Language
Reflexion
Suche…
Rufen Sie Eigenschaften für eine Instanz einer Klasse ab
Imports System.Reflection
Public Class PropertyExample
Public Function GetMyProperties() As PropertyInfo()
Dim objProperties As PropertyInfo()
objProperties = Me.GetType.GetProperties(BindingFlags.Public Or BindingFlags.Instance)
Return objProperties
End Function
Public Property ThisWillBeRetrieved As String = "ThisWillBeRetrieved"
Private Property ThisWillNot As String = "ThisWillNot"
Public Shared Property NeitherWillThis As String = "NeitherWillThis"
Public Overrides Function ToString() As String
Return String.Join(",", GetMyProperties.Select(Function(pi) pi.Name).ToArray)
End Function
End Class
Der Parameter von GetProperties definiert, welche Eigenschaften von der Funktion zurückgegeben werden. Da wir Public und Instance übergeben, gibt die Methode nur Eigenschaften zurück, die sowohl öffentlich als auch nicht freigegeben sind. Weitere Informationen zum Kombinieren von Flag-Enums finden Sie unter Das Attribut Flags .
Holen Sie sich die Mitglieder eines Typs
Dim flags = BindingFlags.Static Or BindingFlags.Public Or BindingFlags.Instance
Dim members = GetType(String).GetMembers(flags)
For Each member In members
Console.WriteLine($"{member.Name}, ({member.MemberType})")
Next
Holen Sie sich eine Methode und rufen Sie sie auf
Statische Methode:
Dim parseMethod = GetType(Integer).GetMethod("Parse",{GetType(String)})
Dim result = DirectCast(parseMethod.Invoke(Nothing,{"123"}), Integer)
Instanzmethode:
Dim instance = "hello".ToUpper
Dim method = Gettype(String).GetMethod("ToUpper",{})
Dim result = method.Invoke(instance,{})
Console.WriteLine(result) 'HELLO
Erstellen Sie eine Instanz eines generischen Typs
Dim openListType = GetType(List(Of ))
Dim typeParameters = {GetType(String)}
Dim stringListType = openListType.MakeGenericType(typeParameters)
Dim instance = DirectCast(Activator.CreateInstance(stringListType), List(Of String))
instance.Add("Hello")
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow