Resharper IQuotedValue

本文关键字:IQuotedValue Resharper | 更新日期: 2023-09-27 17:50:14

我在c#中有这个变量,它是我正在创建的resharper插件的一部分,用于对所有引号值(不仅仅是字符串)抛出警告。

                var sourceFile = _process.SourceFile;
                var file = sourceFile.GetPsiServices().Files.GetDominantPsiFile<CSharpLanguage>(sourceFile);
                if (file != null)
                {
                    var highlights = new List<HighlightingInfo>();
                    var stringHighlight = new RecursiveElementProcessor<IQuotedValue>(declaration =>
                    {
                        var docRange = declaration.GetDocumentRange();
                            highlights.Add(new HighlightingInfo(docRange, new MakeMethodVirtualSuggestion("Warning...")));
                    });
                   file.ProcessDescendants(stringHighlight);
                   commiter(new DaemonStageResult(highlights));
                }

当使用IMethodDeclaration时,它可以工作,但不能弄清楚如何获取IQuotedValue值。在这种情况下使用RecursiveElementProcessor是错误的吗?任何和所有的帮助都非常感激,我一直在努力弄清楚这个问题,现在已经有很多很多小时了。

Resharper IQuotedValue

IQuotedValue是一个XAML元素-它不会在c#语法树中使用。最好的方法是查找ILiteralExpressionICSharpLiteralExpression的元素,然后查看Literal属性,看看它是什么- true, false是数字,字符或字符串。