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));
}