Ejemplo n.º 1
0
        public static JMemberExpression JAccess(this IEntity me)
        {
            if (me == null)
            {
                return(null);
            }
            if (me is ITypeDefinition)
            {
                return(JAccess((ITypeDefinition)me));
            }
            if (me is IType)
            {
                return(JAccess((IType)me));
            }

            var name = JName2(me);

            if (me.IsStatic())
            {
                var member = name;
                if (JMeta.IsGlobalMember(me))
                {
                    return(member);
                }
                if (me is IMethod && JMeta.ExtensionImplementedInInstance((IMethod)me))
                {
                    return(member);
                }
                member.PreviousMember = JAccessStatic(me.DeclaringType);
                return(member);
            }
            else if (me.SymbolKind == SymbolKind.Constructor)
            {
                var att = JMeta.GetJMethodAttribute((IMethod)me);
                if (att != null && att.Name != null) //TODO: hack
                {
                    return(J.Member(att.Name));
                }
                var ce     = me.DeclaringType;
                var member = (JMemberExpression)JAccess(ce);
                return(member);
            }
            return(name);
        }