Using FlattenHierarchy to get inherited static protected and public members
Imports System Imports System.Reflection Imports System.IO Public Class TestClass Public Name As String Private values() As [Object] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Default Public Property Item(ByVal index As Integer) As [Object] Get Return values(index) End Get Set(ByVal Value As [Object]) values(index) = Value End Set End Property Public ReadOnly Property Value() As [Object] Get Return "the value" End Get End Property Public Sub New(ByVal initName As String) Name = initName End Sub Public Sub New() MyClass.New("initialName") End Sub Private methodCalled As Integer = 0 Public Shared Sub SayHello() Console.WriteLine("Hello") End Sub Public Sub AddUp() methodCalled += 1 Console.WriteLine("AddUp Called {0} times", methodCalled) End Sub Public Shared Function ComputeSum(ByVal d1 As Double, ByVal d2 As Double) As Double Return d1 + d2 End Function Public Shared Sub PrintName(ByVal firstName As [String], ByVal lastName As [String]) Console.WriteLine("{0},{1}", lastName, firstName) End Sub Public Sub PrintTime() Console.WriteLine(DateTime.Now) End Sub Public Sub Swap(ByRef a As Integer, ByRef b As Integer) Dim x As Integer = a a = b b = x End Sub End Class <DefaultMemberAttribute("PrintTime")> _ Public Class TestClass2 Public Sub PrintTime() Console.WriteLine(DateTime.Now) End Sub End Class Public Class Base Shared BaseOnlyPrivate As Integer = 0 Protected Shared BaseOnly As Integer = 0 End Class Public Class Derived Inherits Base Public Shared DerivedOnly As Integer = 0 End Class Public Class MostDerived Inherits Derived End Class Class Invoke Public Shared Sub Main() Dim t As Type = GetType(TestClass) Dim c As New TestClass() Dim args() As Object = {100.09, 184.45} Dim finfos() As FieldInfo = GetType(MostDerived).GetFields(BindingFlags.NonPublic Or _ BindingFlags.Public Or BindingFlags.Static Or BindingFlags.FlattenHierarchy) For Each finfo As FieldInfo In finfos Console.WriteLine("{0} defined in {1}.", finfo.Name, finfo.DeclaringType.Name) Next End Sub End Class