小编Eli*_*gan的帖子

何时使用SemanticModel.GetSymbolInfo以及何时使用SemanticModel.GetDeclaredSymbol

在某些情况下,当我试图为我的语法节点获取ISymbol时,我在使用SemanticModel.GetSymbolInfo时失败(变为null)但在使用SemanticModel.GetDeclaredSymbol时成功.

我附上了一个例子.

所以我的问题是何时使用每种方法来获取语义模型?

public class Class1
{
    public System.String MyString { get; set; }

    public static void Main()
    {
        var str =
            @"
            namespace ClassLibrary31
            {
                public class Class1
                {
                    public System.String MyString { get; set; }
                }
            }";

        var syntaxTree = SyntaxFactory.ParseSyntaxTree(str);

        MetadataReference[] metadataReferenceReferences = new MetadataReference[]
        {
            MetadataReference.CreateFromFile(typeof(object).Assembly.Location),
        };

        var compilation =
            CSharpCompilation
                .Create("TraceFluent",
                    new[] {syntaxTree},
                    options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary, warningLevel:1),
                    references: metadataReferenceReferences
                );

        var temp = compilation.Emit("temp");
        var semanticModel = compilation.GetSemanticModel(syntaxTree, true);

        PropertyDeclarationSyntax propertySyntaxNode = 
            syntaxTree.GetRoot()
                .DescendantNodes()
                .OfType<PropertyDeclarationSyntax>() …
Run Code Online (Sandbox Code Playgroud)

c# roslyn roslyn-code-analysis

13
推荐指数
1
解决办法
1832
查看次数

Wpf TreeView具有列,具有UI虚拟化和DataVirtualization

我正在寻找一个wpf控件(免费或商业).树应支持所有常规树视图特性(样式,数据模板,控件模板......),并支持使用Columns布局(类似于Visual Studio中的Watch窗口).

但是也:

  1. 良好的虚拟化 - 应该支持数千个元素
  2. 内置数据虚拟化 - 数据的加载和处理速度很慢,无法一次性完成并按特定顺序完成(类似于分页)
  3. 查看模型支持和绑定,我更喜欢使用视图模型的类型来调查树,而不是调查树本身
  4. 内置支持对数据表示进行搜索和过滤,然后在树上的可视元素上反映匹配
  5. 准确,快速滚动和移动到特定元素的选项(我更喜欢,使用项目的ViewModel表示).

不想自己构建树,我正在寻找现有的实现,至少支持虚拟化和数据虚拟化.

c# wpf treeview wpf-controls data-virtualization

5
推荐指数
1
解决办法
682
查看次数