如何从ISymbol

时间:2018-12-13 15:59:23

标签: c# .net roslyn custom-attributes roslyn-code-analysis

我目前正在开发DiagnosticAnalyzer来警告用户,如果他们尝试使用带有自定义Attribute标签的内容。

假设我有一个Attribute Experimental并声明了一个字段

[Experimental]
Thing myThing;

然后尝试在某处使用

myThing.MethodOnThing()

如果我在分析仪中注册了SyntaxKind.InvocationExpression,则可以捕获myThing的使用并添加警告。但是,ISymbol的名称将为MethodOnThing。因此,当我想说“ myThing被标记为实验”时,我的警告将显示类似“ MethodOnThing被标记为实验...”的内容。

我正在像这样获得符号上的属性

var symbol = context.SemanticModel.GetSymbolInfo(context.Node, context.CancellationToken).Symbol;
var attrs = symbol.GetAttributes();

当我正在查看方法的调用时,我想知道是否存在一种精确的方法来访问Experimental属性(myThing)的源。

0 个答案:

没有答案