2009-12-10 44 views
1

我正在实现Visual Studio加载项,并希望在C#编辑器中删除类或方法时通知我的服务。有没有示例显示如何做到这一点?如何监听Visual Studio代码模型事件?

+0

只是出于好奇:你为什么会想要通知它? – Pieter888 2009-12-10 11:21:13

+0

我希望代码模型与类图同步,就像类设计器一样。 :) – 2009-12-10 13:31:04

回答

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