NRefactory を使用して、このクラスの上のすべてのクラスと属性を見つけようとしていますが、残念ながら (まだ) これを達成できません。
この問題に取り組むための最良のアプローチは何ですか? 属性を見つけることはできますが、それが特定のクラスに属していることをどのように確認できますか?
NRefactory を使用して、このクラスの上のすべてのクラスと属性を見つけようとしていますが、残念ながら (まだ) これを達成できません。
この問題に取り組むための最良のアプローチは何ですか? 属性を見つけることはできますが、それが特定のクラスに属していることをどのように確認できますか?
次のコードはトリックを行いました:
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));
}