Reflection/List properties: Difference between revisions
Content deleted Content added
m Omit from Rust |
|||
Line 812: | Line 812: | ||
-borderwidth -class -menu -relief -screen -use -background -colormap -container -cursor -height |
-borderwidth -class -menu -relief -screen -use -background -colormap -container -cursor -height |
||
-highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width</lang> |
-highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width</lang> |
||
=={{header|Visual Basic .NET}}== |
|||
{{trans|C#}} |
|||
<lang vbnet>Imports System.Reflection |
|||
Module Module1 |
|||
Class TestClass |
|||
Private privateField = 7 |
|||
Public ReadOnly Property PublicNumber = 4 |
|||
Private ReadOnly Property PrivateNumber = 2 |
|||
End Class |
|||
Function GetPropertyValues(Of T)(obj As T, flags As BindingFlags) As IEnumerable |
|||
Return From p In obj.GetType().GetProperties(flags) |
|||
Where p.GetIndexParameters().Length = 0 |
|||
Select New With {p.Name, Key .Value = p.GetValue(obj, Nothing)} |
|||
End Function |
|||
Function GetFieldValues(Of T)(obj As T, flags As BindingFlags) As IEnumerable |
|||
Return obj.GetType().GetFields(flags).Select(Function(f) New With {f.Name, Key .Value = f.GetValue(obj)}) |
|||
End Function |
|||
Sub Main() |
|||
Dim t As New TestClass() |
|||
Dim flags = BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance |
|||
For Each prop In GetPropertyValues(t, flags) |
|||
Console.WriteLine(prop) |
|||
Next |
|||
For Each field In GetFieldValues(t, flags) |
|||
Console.WriteLine(field) |
|||
Next |
|||
End Sub |
|||
End Module</lang> |
|||
{{out}} |
|||
<pre>{ Name = PublicNumber, Value = 4 } |
|||
{ Name = PrivateNumber, Value = 2 } |
|||
{ Name = privateField, Value = 7 } |
|||
{ Name = _PublicNumber, Value = 4 } |
|||
{ Name = _PrivateNumber, Value = 2 }</pre> |
|||
=={{header|zkl}}== |
=={{header|zkl}}== |