В настоящее время я разрабатываю DiagnosticAnalyzer , чтобы предупредить пользователей, если они пытаются использовать что-либо, помеченное пользовательским Attribute
.
Допустим, у меня есть Attribute
Experimental
и объявлено поле
[Experimental]
Thing myThing;
, затем попробуйте использовать его где-нибудь
myThing.MethodOnThing()
Если я зарегистрируюсь на SyntaxKind.InvocationExpression
в моем анализаторе я могу поймать это использование myThing
и добавить предупреждение.Однако имя ISymbol
будет MethodOnThing
.Поэтому в моем предупреждении будет указано что-то вроде «MethodOnThing помечен как экспериментальный ...», когда я хотел бы сказать «myThing помечен как экспериментальный».
Я получаю атрибуты на символе, как этот
var symbol = context.SemanticModel.GetSymbolInfo(context.Node, context.CancellationToken).Symbol;
var attrs = symbol.GetAttributes();
Я хотел бы знать, есть ли точный способ доступа к источнику атрибута Experimental
(myThing
) когда я сейчас смотрю на вызов метода.