コード例 #1
0
        public static MemberDeclarationSyntax[] GenerateClasses(NamespaceDeclarationSyntax @namespace)
        {
            var isInterfaceToClass = @namespace.GetLeadingTrivia().Any(trivia => trivia.ToString().Trim() == "//Meta(interface-to-class)");
            if (!isInterfaceToClass)
                return Array<MemberDeclarationSyntax>.Empty;

            var resultMembers = new List<MemberDeclarationSyntax>();
            foreach (var @interface in @namespace.Members.OfType<InterfaceDeclarationSyntax>())
            {
                resultMembers.Add(ToClass(@interface));
            }
            return resultMembers.ToArray();
        }
コード例 #2
0
        private Namespace TraverseNamespace(NamespaceDeclarationSyntax nds)
        {
            Namespace retNS = new Namespace();

            retNS.Name = nds.Name.ToString();

            if (nds.HasLeadingTrivia)
            {
                SetOuterComments(retNS, nds.GetLeadingTrivia().ToFullString());
            }

            if (nds.HasTrailingTrivia)
            {
                SetInnerComments(retNS, nds.GetTrailingTrivia().ToFullString());
            }

            //First, grab any objects defined at the beginning of the namespace (even delegates!)
            var delegates = from aDelegate in nds.ChildNodes().OfType<DelegateDeclarationSyntax>() select aDelegate;
            foreach (DelegateDeclarationSyntax dds in delegates)
            {
                //TraverseDelegate
            }

            //Next, traverse any classes
            var classes = from cls in nds.ChildNodes().OfType<ClassDeclarationSyntax>() select cls;
            foreach (ClassDeclarationSyntax cds in classes)
            {
                retNS.Classes.Add(TraverseClass(cds));
            }

            var interfaces = from anInterface in nds.ChildNodes().OfType<InterfaceDeclarationSyntax>() select anInterface;
            foreach (InterfaceDeclarationSyntax ids in interfaces)
            {
                Interface tempInterface = TraverseInterface(ids);
                retNS.Interfaces.Add(tempInterface);
            }
            var enums = from aEnum in nds.ChildNodes().OfType<EnumDeclarationSyntax>() select aEnum;
            foreach (EnumDeclarationSyntax eds in enums)
            {
                Model.Enum tempEnum = TraverseEnums(eds);
                retNS.Enums.Add(tempEnum);
            }
            //TODO: Don't forget enums
            return retNS;
        }