2009-12-10 1 views
1

Я внедряю надстройку Visual Studio, и я хочу, чтобы моя служба была уведомлена, когда класс или метод удалены в редакторе C#. Есть ли образцы, показывающие, как это сделать?Как прослушивать события модели кода Visual Studio?

+0

Просто из любопытства: почему бы вам хотите получить уведомление об этом? – Pieter888

+0

Я хочу, чтобы модель кода была синхронизирована с диаграммами классов, почти как конструктор классов. :) –

ответ

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; 
    } 
}