示例#1
0
        public override List <INamespaceMember> Rewrite(List <INamespaceMember> namespaceMembers)
        {
            List <INamespaceMember> newList = new List <INamespaceMember>();

            if (namespaceMembers == null)
            {
                return(newList);
            }
            foreach (INamespaceMember member in namespaceMembers)
            {
                Element currentElement = null;

                MemberTypes memberType = Util.GetMemberTypeFromMember(member);

                if (memberType == MemberTypes.Type)
                {
                    INamedTypeDefinition typeDef = member as INamedTypeDefinition;
                    string typeName = Util.FullyQualifiedTypeNameFromType(typeDef);
                    currentElement = _currentTrimAssembly.GetTypeElement(typeName);
                    // special case for the module class. In mscorlib we don't have any global functions, etc.
                    // TODO: process its members too.
                    if (currentElement == null && IsSpecialType(typeName))
                    {
                        currentElement = new SpecialTrimType(typeName);
                        if (!_systemTypes.Contains(typeName))
                        {
                            _systemTypes.Add(typeName);
                        }
                    }
                }
                else
                {
                    currentElement = new SpecialTrimMember(null, member.Name.Value, null, memberType);
                }

                if (currentElement != null)
                {
                    _trimElements.Push(currentElement);

                    // Visit(INamespaceMember) will create the Mutable copy
                    INamespaceMember newMember = this.Rewrite(member);
                    newList.Add(newMember);

                    _trimElements.Pop();
                }
            }

            return(newList);
        }
示例#2
0
        public override List<INamespaceMember> Rewrite(List<INamespaceMember> namespaceMembers)
        {
            List<INamespaceMember> newList = new List<INamespaceMember>();

            if (namespaceMembers == null)
            {
                return newList;
            }
            foreach (INamespaceMember member in namespaceMembers)
            {
                Element currentElement = null;

                MemberTypes memberType = Util.GetMemberTypeFromMember(member);

                if (memberType == MemberTypes.Type)
                {
                    INamedTypeDefinition typeDef = member as INamedTypeDefinition;
                    string typeName = Util.FullyQualifiedTypeNameFromType(typeDef);
                    currentElement = _currentTrimAssembly.GetTypeElement(typeName);
                    // special case for the module class. In mscorlib we don't have any global functions, etc.
                    // TODO: process its members too.
                    if (currentElement == null && IsSpecialType(typeName))
                    {
                        currentElement = new SpecialTrimType(typeName);
                        if (!_systemTypes.Contains(typeName))
                        {
                            _systemTypes.Add(typeName);
                        }
                    }
                }
                else
                {
                    currentElement = new SpecialTrimMember(null, member.Name.Value, null, memberType);
                }

                if (currentElement != null)
                {
                    _trimElements.Push(currentElement);

                    // Visit(INamespaceMember) will create the Mutable copy
                    INamespaceMember newMember = this.Rewrite(member);
                    newList.Add(newMember);

                    _trimElements.Pop();
                }
            }

            return newList;
        }