APISampleUnitTestsCS.FAQ.GetAllFieldAndMethodSymbolsInACompilation C# (CSharp) Метод

GetAllFieldAndMethodSymbolsInACompilation() приватный Метод

private GetAllFieldAndMethodSymbolsInACompilation ( ) : void
Результат void
        public void GetAllFieldAndMethodSymbolsInACompilation()
        {
            var tree = SyntaxTree.ParseText(@"
            using System;
            namespace NS1
            {
            public class C
            {
            int InstanceField = 0;
            internal void InstanceMethod()
            {
            Console.WriteLine(InstanceField);
            }
            }
            }
            namespace NS2
            {
            static class ExtensionMethods
            {
            public static void ExtensionMethod(this NS1.C s)
            {
            }
            }
            }
            class Program
            {
            static void Main()
            {
            NS1.C c = new NS1.C();
            c.ToString();
            }
            }");
            var mscorlib = MetadataReference.CreateAssemblyReference("mscorlib");
            var compilation = Compilation.Create("MyCompilation",
                syntaxTrees: new[] { tree }, references: new[] { mscorlib });
            var results = new StringBuilder();

            // Traverse the symbol tree to find all namespaces, types, methods and fields.
            // foreach (NamespaceSymbol ns in compilation.GetReferencedAssemblySymbol(mscorlib).GlobalNamespace.GetNamespaceMembers())
            foreach (NamespaceSymbol ns in compilation.Assembly.GlobalNamespace.GetNamespaceMembers())
            {
                results.AppendLine();
                results.Append(ns.Kind);
                results.Append(": ");
                results.Append(ns.Name);
                foreach (TypeSymbol type in ns.GetTypeMembers())
                {
                    results.AppendLine();
                    results.Append("    ");
                    results.Append(type.TypeKind);
                    results.Append(": ");
                    results.Append(type.Name);
                    foreach (Symbol member in type.GetMembers())
                    {
                        results.AppendLine();
                        results.Append("       ");
                        if (member.Kind == SymbolKind.Field || member.Kind == SymbolKind.Method)
                        {
                            results.Append(member.Kind);
                            results.Append(": ");
                            results.Append(member.Name);
                        }
                    }
                }
            }

            Assert.AreEqual(@"
            Namespace: NS1
            Class: C
               Method: .ctor
               Field: InstanceField
               Method: InstanceMethod
            Namespace: NS2
            Class: ExtensionMethods
               Method: ExtensionMethod", results.ToString());
        }