Microsoft.CSharp.RuntimeBinder.SymbolTable.LookupMember C# (CSharp) Method

LookupMember() private method

private LookupMember ( string name, EXPR callingObject, Microsoft.CSharp.RuntimeBinder.Semantics.ParentSymbol context, int arity, MemberLookup mem, bool allowSpecialNames, bool requireInvocable ) : SymWithType
name string
callingObject Microsoft.CSharp.RuntimeBinder.Semantics.EXPR
context Microsoft.CSharp.RuntimeBinder.Semantics.ParentSymbol
arity int
mem Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup
allowSpecialNames bool
requireInvocable bool
return Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType
        internal SymWithType LookupMember(
            string name,
            EXPR callingObject,
            ParentSymbol context,
            int arity,
            MemberLookup mem,
            bool allowSpecialNames,
            bool requireInvocable)
        {
            CType type = callingObject.type;

            if (type.IsArrayType())
            {
                type = _semanticChecker.GetSymbolLoader().GetReqPredefType(PredefinedType.PT_ARRAY);
            }
            if (type.IsNullableType())
            {
                type = type.AsNullableType().GetAts(_semanticChecker.GetSymbolLoader().GetErrorContext());
            }

            if (!mem.Lookup(
                _semanticChecker,
                type,
                callingObject,
                context,
                GetName(name),
                arity,
                MemLookFlags.TypeVarsAllowed |
                    (allowSpecialNames ? 0 : MemLookFlags.UserCallable) |
                    (name == SpecialNames.Indexer ? MemLookFlags.Indexer : 0) |
                    (name == SpecialNames.Constructor ? MemLookFlags.Ctor : 0) |
                    (requireInvocable ? MemLookFlags.MustBeInvocable : 0)))
            {
                return null;
            }
            return mem.SwtFirst();
        }