zoukankan      html  css  js  c++  java
  • 对Symbol的获取(Roslyn)

     1 string s = @"class C { void M() {      } }";
     2 
     3 SyntaxTree tree = SyntaxFactory.ParseSyntaxTree(text);
     4 
     5 CSharpCompilation Compilation = CSharpCompilation
     6                 .Create("test")
     7                 .AddSyntaxTrees(tree)
     8                 .AddReferences(MetadataReference.CreateFromFile(typeof(object).Assembly.Location));
     9 
    10   ///为了得到SemanticModel
    11 SemanticModel semantic = Compilation.GetSemanticModel(tree);
    12 
    13 //将树种的节点通过SemanticModelde得到Symbol
    14        SyntaxNode syntaxNode;
    15        tree.TryGetRoot(out syntaxNode);
    16        //这个方法在下面的片段里
    17        GetSymbolType(syntaxNode,semantic);  
    18 public static void GetSymbolType(SyntaxNode node,SemanticModel model)
    19         {
    20             foreach (var item in node.DescendantNodesAndSelf().OfType<MemberDeclarationSyntax>())
    21             {
    22                 //注意 GetDeclaredSymbol方法得到的传入的参数节点是
    23                 //MemberDeclarationSyntax的子类,可以查看它都有哪些重载
    24                 
    25                 ISymbol type = model.GetDeclaredSymbol(item);
    26                 
    27             }
    28         }
  • 相关阅读:
    Git 总结
    .net报错大全
    对于堆和栈的理解
    html 局部打印
    c#面试问题总结
    算法题总结
    h5-plus.webview
    堆和栈,引用类型,值类型,指令,指针
    .NET framework具体解释
    前端之间的url 传值
  • 原文地址:https://www.cnblogs.com/smartisn/p/15030519.html
Copyright © 2011-2022 走看看