2013-10-10 2 views
1

Я пытаюсь найти все классы и атрибуты выше этого класса с помощью 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(); 
0

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

IEnumerable<ICSharpCode.NRefactory.CSharp.Attribute> GetAttributes(TypeDeclaration typeDeclaration) 
{ 
    return typeDeclaration.Members 
     .SelectMany(member => member 
      .Attributes 
      .SelectMany(attr => attr.Attributes)); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^