Используя Microsoft.CodeAnalysis, как найти ссылки на конструктор экземпляра классов по умолчанию (раздел 10.11.4 C # 4) - PullRequest
0 голосов
/ 13 мая 2018

Я использую следующий код для получения списка всех конструкторов из ISymbol, и я только что заметил, что классы без явного конструктора показывают нулевые дочерние узлы.Моя цель - найти все места, где создается экземпляр класса (в настоящее время я использую Microsoft.CodeAnalysis.FindSymbols.SymbolFinder.FindReferencesAsync).

Есть ли какой-нибудь способ получить символ для автоматически реализуемого конструктора?Если нет, то есть ли другой способ найти места, где создаются эти классы?

var ctors = dependant.DeclaringSyntaxReferences.SelectMany(
    r => r.GetSyntax().ChildNodes().Where(
        n => Microsoft.CodeAnalysis.CSharp.CSharpExtensions.Kind(n) == CSSyntaxKind.ConstructorDeclaration
        || Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.Kind(n) == VBSyntaxKind.ConstructorBlock));

1 Ответ

0 голосов
/ 14 мая 2018

Я только что нашел это, что делает именно то, что я ожидал.

INamedTypeSymbol.InstanceConstructors

...