質問

Visual Studioアドインを実装しており、C#エディターでクラスまたはメソッドが削除されたときにサービスに通知されたいと考えています。それを行う方法を示すサンプルはありますか?

役に立ちましたか?

解決

おそらく、DTE2オブジェクトを介して公開されるコードモデルイベントを探しているでしょう。完全に機能する同期のために、要素変化したイベントとエレメンタドイベントも処理する必要があります。

public void RegisterCodeModelEvents(DTE2 applicationObject)
{
   events = (Events2)applicationObject.Events; //events Must be a field
   codeModelEvents = events.get_CodeModelEvents(null); 

   codeModelEvents.ElementChanged += CodeModelElementChanged;
   codeModelEvents.ElementAdded += CodeModelElementAdded;
   codeModelEvents.ElementDeleted += CodeModelElementDeleted; // this is it!
}

終了後にハンドラーを削除することを忘れないでください:

private void UnregisterCodeModelEvents()
{
    if (codeModelEvents != null)
    {
        codeModelEvents.ElementAdded -= CodeModelElementAdded;
        codeModelEvents.ElementChanged -= CodeModelElementChanged;
        codeModelEvents.ElementDeleted -= CodeModelElementDeleted;
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top