Каков правильный способ проверки типа переменной в анализаторе кода Roslyn? Я регистрируюсь для узла ObjectCreationExpressionSyntax
, и я могу получить тип, но я не уверен, что правильный способ проверить, что это тип, о котором я забочусь.Проверка типа переменной для анализа кода
Я нашел способ сделать это, проверив строку отображения, но мне интересно, есть ли более правильный способ выполнить это. Например, вот код, который пытается проверить создание ArrayList.
private static void SyntaxValidator(SyntaxNodeAnalysisContext context)
{
var creation = (ObjectCreationExpressionSyntax)context.Node;
var variableType = creation.Type as IdentifierNameSyntax;
if (variableType == null)
return;
var variableTypeInfo = context.SemanticModel.GetTypeInfo(context.Node);
if (variableTypeInfo.Type != null && variableTypeInfo.Type.ToDisplayString().Equals("System.Collections.ArrayList"))
{
context.ReportDiagnostic(Diagnostic.Create(Rule, creations.GetLocation(), ""));
}
}
ссылка не работает. Не могли бы вы отредактировать ответ, чтобы включить обновленную ссылку? –