コード例 #1
0
 static Parser <Expression> StaticInvocationExpression(StaticAccess staticMember)
 {
     return(from o in Token(Char('('))
            from arguments in ArgumentList()
            from c in Token(Char(')'))
            let identifier = staticMember.Identifier.Value
                             select Expression.Call(staticMember.Type, identifier.Name, identifier.TypeArguments, arguments.ToArray()));
 }
コード例 #2
0
        static Parser <Expression> StaticMemberAccessExpression(StaticAccess staticMember)
        {
            var identifier      = staticMember.Identifier.Value;
            var propertyOrField = staticMember.Type.GetMember(identifier.Name, BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy);

            if (propertyOrField.Length == 0)
            {
                throw new ArgumentException("The specified member name was not found.", "propertyOrFieldName");
            }

            if (propertyOrField.Length > 1)
            {
                throw new ArgumentException("The specified member name is ambiguous.", "propertyOrFieldName");
            }

            return(Return(Expression.MakeMemberAccess(null, propertyOrField[0])));
        }