Visual Basic .NET Language
Riflessione
Ricerca…
Recupera le proprietà per un'istanza di una classe
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
Il parametro di GetProperties definisce quali tipi di proprietà verranno restituiti dalla funzione. Poiché passiamo Public e Instance, il metodo restituirà solo proprietà pubbliche e non condivise. Vedi l'attributo e le spiegazioni di The Flags su come combinare le enumerazioni.
Ottieni i membri di un tipo
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
Ottieni un metodo e invocalo
Metodo statico:
Dim parseMethod = GetType(Integer).GetMethod("Parse",{GetType(String)})
Dim result = DirectCast(parseMethod.Invoke(Nothing,{"123"}), Integer)
Metodo di istanza:
Dim instance = "hello".ToUpper
Dim method = Gettype(String).GetMethod("ToUpper",{})
Dim result = method.Invoke(instance,{})
Console.WriteLine(result) 'HELLO
Crea un'istanza di un tipo generico
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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow