代码之家  ›  专栏  ›  技术社区  ›  Alex Ilyin

如何收听Visual Studio代码模型事件?

  •  1
  • Alex Ilyin  · 技术社区  · 15 年前

    我正在实现Visual Studio外接程序,我希望在C编辑器中移除类或方法时通知我的服务。有没有样品显示怎么做?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Dror Helper    15 年前

    您可能正在寻找通过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;
        }
    }