指定された属性を持つフィールドを見つけようとしています。FirstQuickFixの例を変更しようとしました。これは、良い出発点になると思ったからです。しかし、コードを実行しても何も起こりません。私の主な問題は何ですか?
プロジェクトの概要とウォークスルードキュメントを読んだ後の私の理解は、構文ツリーで見つけたトークンの属性を要求できることです。構文木は、ソースコードの正確なツリー表現です。フィールドの宣言とその属性の接続には、セマンティックを介してアクセスできます。それとも私の理解は完全に間違っていますか?
[ExportCodeIssueProvider("FirstQuickFix_", LanguageNames.CSharp)]
class CodeIssueProvider : ICodeIssueProvider
{
public IEnumerable<CodeIssue> GetIssues
(IDocument document, CommonSyntaxNode node, CancellationToken cancellationToken)
{
var tokens = from nodeOrToken in node.ChildNodesAndTokens()
where nodeOrToken.HasAnnotations(Type.GetType("myAttribute"))
select nodeOrToken.AsToken();
foreach (var token in tokens)
{
var issueDescription = string.Format("found!!!");
yield return new CodeIssue(CodeIssueKind.Info, token.Span, issueDescription);
}
}
}
編集:
私が達成したいのは、すなわちを見つけることです。属性myAttributeを持つすべてのフィールド:
namespace ConsoleApplication
{
class Program
{
[myAttribute]
string myField = "test";
public void testing()
{
Console.WriteLine(myField);
}
}
}