2009-12-10 5 views
1

J'implémente Visual Studio Add-in et je souhaite que mon service soit averti lorsque la classe ou la méthode est supprimée dans l'éditeur C#. Y a-t-il des échantillons montrant comment faire cela?Comment écouter les événements de modèle de code Visual Studio?

+0

Juste par curiosité: Pourquoi voudriez-vous Voulez-vous être averti pour cela? – Pieter888

+0

Je veux que le modèle de code soit synchronisé avec les diagrammes de classes, presque comme le concepteur de classe. :) –

Répondre

2

Vous recherchez probablement des événements de modèle de code exposés via l'objet DTE2. Pour la synchronisation en fonctionnalités, vous aurez besoin pour gérer les événements ElementChanged et ElementAdded ainsi:

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

Ne pas oublier d'enlever les gestionnaires après avoir terminé:

private void UnregisterCodeModelEvents() 
{ 
    if (codeModelEvents != null) 
    { 
     codeModelEvents.ElementAdded -= CodeModelElementAdded; 
     codeModelEvents.ElementChanged -= CodeModelElementChanged; 
     codeModelEvents.ElementDeleted -= CodeModelElementDeleted; 
    } 
} 
Questions connexes