The GetMember method of the System.Type class is useful for finding one or more methods within a type. This method returns an array of MemberInfo objects that describe any members that match the given parameters.

The * character may be used as a wildcard character only at the end of the name parameter string. In addition, it may be the only character in the name parameter; if this is so, all members are returned. No other wildcard characters, such as ?, are supported.

The following method use the Type.GetMember method, which returns all members that match a specified criteria:

public static void FindMemberInAssembly(string asmPath, string memberName)
{
    Assembly asm = Assembly.LoadFrom(asmPath);
    foreach (Type asmType in asm.GetTypes())
    {
        // check for static ones first
        MemberInfo[] members = asmType.GetMember(memberName, MemberTypes.All,
            BindingFlags.Public | BindingFlags.NonPublic |
            BindingFlags.Static);

        if (members.Length == 0)
        {
            // check for instance members as well
            members = asmType.GetMember(memberName, MemberTypes.All,
                BindingFlags.Public | BindingFlags.NonPublic |
                BindingFlags.Instance);
        }

        foreach (MemberInfo member in members)
        {
            Console.WriteLine("Found " + member.MemberType + ":  " +
                member.ToString() + " IN " +
                member.DeclaringType.FullName);
        }
    }
}

The memberName argument can contain the wildcard character * to indicate any character or characters. So to find all methods starting with the string “Magic”, pass the string “Magic*” to the memberName parameter. Note that the memberName argument is case-sensitive, but the asmPath argument is not. If you’d like to do a case-insensitive search for members, add the BindingFlags.IgnoreCase flag to the other BindingFlags in the call to Type.GetMember.

Once we obtain an array of MemberInfo objects, we need to determine what kind of members they are. To do this, the MemberInfo class contains a MemberType property that returns a System.Reflection.MemberTypes enumeration value. This could be any of the values defined in the following:

Enumeration value Definition
All All member types
Constructor A constructor member
Custom A custom member types
Event A event member
Field A field member
Method A method member
NestedType A nested member
Property A property member
TypeInfo A type member represents a TypeInfo member

Popularity: 2% [?]