コード例 #1
0
        private Interface TraverseInterface(InterfaceDeclarationSyntax ids)
        {
            Interface retInterface = new Interface();

            if (ids.HasLeadingTrivia)
            {
                SetOuterComments(retInterface, ids.GetLeadingTrivia().ToFullString());
            }

            if (ids.HasTrailingTrivia)
            {
                SetInnerComments(retInterface, ids.GetTrailingTrivia().ToFullString());
            }

            foreach (SyntaxToken st in ids.Modifiers)
            {
                string modifier = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(st.ValueText);
                Encapsulation encap;
                Qualifiers qual;
                if (System.Enum.TryParse<Encapsulation>(modifier, out encap))
                {
                    retInterface.Encapsulation.Add(encap);
                }
                else if (System.Enum.TryParse<Qualifiers>(modifier, out qual))
                {
                    retInterface.Qualifiers.Add(qual);
                }
            }
            var accessVarsDecl = from aAccessVarsDecl in ids.ChildNodes().OfType<LocalDeclarationStatementSyntax>() select aAccessVarsDecl;
            foreach (LocalDeclarationStatementSyntax ldss in accessVarsDecl)
            {
                Method tempMethod = TransverseAccessVars(ldss);
                retInterface.Fields.AddRange(tempMethod.AccessedVariables);
                //retInterface.Methods.AddRange(tempMethod.InvokedMethods);
            }
            var interfaces = from aInterface in ids.ChildNodes().OfType<InterfaceDeclarationSyntax>() select aInterface;
            foreach (InterfaceDeclarationSyntax ids2 in interfaces)
            {
                Interface tempInterface = TraverseInterface(ids2);
                retInterface.InheritsInterfaces.Add(tempInterface);
            }
            retInterface.Name = ids.Identifier.ValueText;
            var methods = from aMethod in ids.ChildNodes().OfType<MethodDeclarationSyntax>() select aMethod;
            foreach (MethodDeclarationSyntax mds in methods)
            {
                Method tempMethod = TransverseMethods(mds);
                retInterface.Fields.AddRange(tempMethod.AccessedVariables);
                retInterface.Methods.Add(tempMethod);
            }
            //public List<string> InheritsStrings { get; set; }
            //public List<Property> Properties { get; set; }
            return retInterface;
        }