1

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

4

1 に答える 1

2

おそらく、DTE2オブジェクトを介して公開されたコードモデルイベントを探しています。フル機能の同期を行うには、ElementChangedイベントとElementAddedイベントも処理する必要があります。

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;
    }
}
于 2010-01-24T13:29:25.083 に答える