public override object Exec(BCLInterfaceType d, object arg)
        {
            // * Has the attribute previously found?
            if (d.Members.ContainsKey(memberName))
            {
                return(d.Members[memberName].Type);
            }

            // * Lets use introspection
            TypeExpression memberType = d.FindMember(memberName);

            if (memberType != null)
            {
                return(memberType);
            }

            // * Search in the inhirtance tree
            foreach (BCLInterfaceType interfaze in d.InterfaceList)
            {
                // * Does this interface support this attribute?
                TypeExpression member = (TypeExpression)interfaze.AcceptOperation(this, arg);
                if (member != null)
                {
                    return(member);
                }
            }
            // * not found
            return(null);
        }
Example #2
0
 public override object Exec(BCLInterfaceType bclInterfaceType, object arg)
 {
     // * This operation has an important performance cost. Therefore, it is done locally because
     //   the BCLClassType only returns the type of an specific member (not all of them)
     return(this.getAccessModifiers(bclInterfaceType, true));
 }
 public virtual object Exec(BCLInterfaceType b, object arg)
 {
     return(Exec((InterfaceType)b, arg));
 }