protected sealed override QueriedMemberList <M> Factory(string key) { QueriedMemberList <M> result = QueriedMemberList <M> .Create(_type, key, ignoreCase : _ignoreCase); result.Compact(); return(result); }
// // Returns the cached result of a name-agnostic 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>(bool immediateTypeOnly) where M : MemberInfo { int index = MemberPolicies <M> .MemberTypeIndex; object result = Volatile.Read(ref _nameAgnosticQueryCaches[index]); if (result == null) { QueriedMemberList <M> newResult = QueriedMemberList <M> .Create(_type, filter : null, ignoreCase : false, immediateTypeOnly : immediateTypeOnly); newResult.Compact(); Volatile.Write(ref _nameAgnosticQueryCaches[index], newResult); return(newResult); } QueriedMemberList <M> list = (QueriedMemberList <M>)result; if (list.ImmediateTypeOnly && !immediateTypeOnly) { QueriedMemberList <M> newResult = QueriedMemberList <M> .Create(_type, filter : null, ignoreCase : false, immediateTypeOnly : false); newResult.Compact(); Volatile.Write(ref _nameAgnosticQueryCaches[index], newResult); return(newResult); } return(list); }
// // Returns the cached result of a name-agnostic query on the Type's members, as if you'd passed in // // BindingFlags == Public | NonPublic | Instance | Static | FlattenHierarchy // public QueriedMemberList <M> GetQueriedMembers <M>() where M : MemberInfo { int index = MemberPolicies <M> .MemberTypeIndex; object result = Volatile.Read(ref _nameAgnosticQueryCaches[index]); if (result == null) { QueriedMemberList <M> newResult = QueriedMemberList <M> .Create(_type, optionalNameFilter : null, ignoreCase : false); newResult.Compact(); result = newResult; Volatile.Write(ref _nameAgnosticQueryCaches[index], result); } Debug.Assert(result is QueriedMemberList <M>); return(Unsafe.As <QueriedMemberList <M> >(result)); }