7.8. An Advanced Member Search Mechanism
Problem
You are searching for a member within a
type using the Type
class. However, complex member
searches are not available through the
GetMember
and
GetMembers
methods of a Type
object. The GetMember
method searches for a member
name only within a type limited by the set of
BindingFlags
used, and the
GetMembers
method searches for all members limited
by the set of BindingFlags
used.
BindingFlags
is
an enumeration of various member types that can be searched. The
BindingFlags
related to this recipe are defined
here:
- DeclaredOnly
Include inherited members in the search.
- Default
No binding flags are used.
- FlattenHierarchy
Include all static members in the inheritance hierarchy in the search (do not include static members of nested types in the search).
- IgnoreCase
Perform a case-insensitive search.
- Instance
Include instance members in the search.
- NonPublic
Include nonpublic members in the search.
- Public
Include public members in the search.
- Static
Include static members in the search.
You need to create more flexible and advanced searches for members that do not involve creating your own member search engine.
Solution
The FindMembers
method of a Type
object can be used, along with a
callback, to create your own complex searches. The following method
will call our custom member searching method,
SearchMembers
:
using System; using System.Reflection; public class SearchType { public void TestSearchMembers( ) { MemberInfo[] members = SearchMembers(this.GetType( ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.