// // Returns the cached result of a name-specific query on the Type's members, as if you'd passed in // // BindingFlags == Public | NonPublic | Instance | Static | FlattenHierarchy // public QueriedMemberList <M> GetQueriedMembers <M>(string name, bool ignoreCase) where M : MemberInfo { int index = MemberPolicies <M> .MemberTypeIndex; object obj = ignoreCase ? _perNameQueryCaches_CaseInsensitive[index] : _perNameQueryCaches_CaseSensitive[index]; Debug.Assert(obj is PerNameQueryCache <M>); PerNameQueryCache <M> unifier = Unsafe.As <PerNameQueryCache <M> >(obj); QueriedMemberList <M> result = unifier.GetOrAdd(name); return(result); }
// // Returns the cached result of a name-specific query on the Type's members, as if you'd passed in // // BindingFlags == Public | NonPublic | Instance | Static | FlattenHierarchy (immediateTypeOnly == false) // Public | NonPublic | Instance | Static | DeclaredOnly (immediateTypeOnly == true) // public QueriedMemberList <M> GetQueriedMembers <M>(string name, bool ignoreCase, bool immediateTypeOnly) where M : MemberInfo { int index = MemberPolicies <M> .MemberTypeIndex; object[] cacheArray = ignoreCase ? (immediateTypeOnly ? _perNameQueryCaches_CaseInsensitive_ImmediateTypeOnly : _perNameQueryCaches_CaseInsensitive) : (immediateTypeOnly ? _perNameQueryCaches_CaseSensitive_ImmediateTypeOnly : _perNameQueryCaches_CaseSensitive); object unifierAsObject = cacheArray[index]; PerNameQueryCache <M> unifier = (PerNameQueryCache <M>)unifierAsObject; QueriedMemberList <M> result = unifier.GetOrAdd(name); return(result); }