NRefactory атрибуты с классом

Я пытаюсь найти все классы и атрибуты над этим классом с помощью NRefactory, но, к сожалению, я (пока) не могу этого достичь.

Каков наилучший подход к решению этой проблемы? Я могу найти атрибуты, но как я могу быть уверен, что он принадлежит к определенному классу?

2 ответа

Следующий код добился цели:

        StreamReader reader = new StreamReader(@"..\..\demo.cs");
        var tex = reader.ReadToEnd();

        var syntaxTree = new CSharpParser().Parse(tex, tex);

        var testClass = syntaxTree.Descendants.OfType<TypeDeclaration>().Single(x => x.ClassType == ClassType.Class);
        var testClassAttributes = testClass.Attributes.SelectMany(x => x.Attributes).ToArray();

Вы можете использовать следующий метод:

IEnumerable<ICSharpCode.NRefactory.CSharp.Attribute> GetAttributes(TypeDeclaration typeDeclaration)
{
    return typeDeclaration.Members
        .SelectMany(member => member
            .Attributes
            .SelectMany(attr => attr.Attributes));
}
Другие вопросы по тегам