IVsHierarchyRefactorNotify Interface

Definição

Notifica a hierarquia de operações de refatoração.

public interface class IVsHierarchyRefactorNotify
public interface class IVsHierarchyRefactorNotify
__interface IVsHierarchyRefactorNotify
[System.Runtime.InteropServices.Guid("FE5FEE31-C302-4961-876F-F3C8F853E4F8")]
[System.Runtime.InteropServices.InterfaceType(1)]
public interface IVsHierarchyRefactorNotify
[<System.Runtime.InteropServices.Guid("FE5FEE31-C302-4961-876F-F3C8F853E4F8")>]
[<System.Runtime.InteropServices.InterfaceType(1)>]
type IVsHierarchyRefactorNotify = interface
Public Interface IVsHierarchyRefactorNotify
Atributos

Comentários

Para dar suporte a operações de refatoração, o sistema do projeto deve implementar o IVsHierarchy , que representa uma hierarquia, IVsProject e IVsHierarchyRefactorNotify interfaces. Você também deve implementar um serviço de linguagem para fornecer suporte aos recursos associados à edição do código-fonte, incluindo as operações de refatoração. Para obter mais informações sobre o serviço de linguagem, consulte interfaces de serviço de idioma herdado.

Ao implementar o IVsHierarchyRefactorNotify , você fornece ao seu serviço de linguagem a capacidade de notificar a IVsHierarchy interface sobre operações de refatoração, como renomeação simbólica ou reordenação de parâmetros. Se a hierarquia usar provedores de compilação, geradores de arquivo único ou algum outro serviço para gerar código, ele deverá obter uma referência ao objeto que implementa a IVsRefactorNotify interface.

Cada sistema de projeto e um serviço de linguagem definem uma maneira específica de obter uma referência ao IVsRefactorNotify objeto. Por exemplo, os Visual Basic Visual C# Visual J# sistemas de projetos da área de trabalho, ou, obtêm uma referência ao objeto que implementa IVsRefactorNotify chamando IUnknown::QueryInterface o objeto que implementa IVsSingleFileGenerator . O Visual Basic , o Visual C# ou os sistemas de Visual J# projeto Web são chamados QueryService usando um Guid registrado na \ chave do registro HKLM\Software\Microsoft\VisualStudio\8.0\Projects {Project-System-GUID} \FileExtensions \ {extensão de arquivo} \RefactorNotify. A hierarquia passa a notificação para o IVsRefactorNotify objeto para incorporar a operação de refatoração no arquivo do designer ou para interromper a operação e retornar uma mensagem de erro por meio de IErrorInfo. O arquivo de designer pode ser qualquer um dos arquivos de entrada fornecidos por Visual Studio , como. resx,. xsd,. Settings,. map e arquivos. MyApp ou qualquer outra extensão de arquivo associada a um gerador de código ou provedor de compilação.

Para concluir com êxito a operação de refatoração completa, a hierarquia deve fazer check-out dos arquivos passados para o IVsHierarchyRefactorNotify e os arquivos retornados das IVsRefactorNotify chamadas de método correspondentes.

A hierarquia deve exibir uma mensagem de erro na caixa de mensagem quando a operação de refatoração falha.

Fluxo de operação

  1. O usuário invoca a renomeação simbólica ou qualquer outra operação de refatoração.

  2. O Visual Studio serviço de linguagem determina quais arquivos de código a operação afeta.

  3. O serviço de linguagem chama IVsHierarchyRefactorNotify.OnBefore métodos para notificar a hierarquia quais arquivos são afetados por essa operação.

  4. A hierarquia determina se os arquivos afetados são gerados a partir dos arquivos do designer.

  5. Se os arquivos forem gerados, a hierarquia obterá uma referência ao objeto que implementa IVsRefactorNotify e enviará as IVsRefactorNotify.OnBefore notificações para o IVsRefactorNotify implementador para cada arquivo gerado.

  6. O IVsRefactorNotify implementador pode interromper a operação retornando uma falha e definindo um erro chamando o M:Microsoft.VisualStudio.Shell.Interop.IVsUIShell.SetErrorInfo(System.Int32,System.String,System.UInt32,System.String,System.String) método. Se o IVsRefactorNotify implementador não quiser interromper a operação, ele determina quais arquivos de designer a operação afeta e retorna o conjunto de arquivos para IVsHierarchyRefactorNotify na matriz de saída, VSITEMID .

    Observação

    O IVsRefactorNotify implementador não deve atualizar os arquivos do designer neste momento. Os arquivos devem ser atualizados durante a segunda chamada para os IVsRefactorNotify.On métodos, por exemplo, durante a OnGlobalSymbolRenamed chamada do método. As IVsRefactorNotify.OnBefore chamadas de método permitem que a hierarquia Confira os arquivos gerados como uma unidade. A hierarquia tem a opção de interromper toda a operação antes que qualquer alteração seja feita, se um dos geradores de código não puder consumir a operação de refatoração.

  7. Se o IVsRefactorNotify implementador retornar uma falha, a hierarquia deverá alertar o usuário sobre o erro. A hierarquia pode continuar a operação ou cancelar e Stoop a operação de refatoração. Se a operação for interrompida, o HRESULT conterá os seguintes valores:

    E_ABORT

    OLE_E_PROMPTSAVECANCELLED

    OLECMDERR_E_CANCELED

    HR_E_CSHARP_USER_CANCEL.

  8. Se o IVsRefactorNotify implementador retornar com êxito ou as solicitações do chamador para continuar em caso de falha, a hierarquia deverá verificar os arquivos passados para IVsHierarchyRefactorNotify e os arquivos retornados das IVsRefactorNotify chamadas de métodos correspondentes.

    Observação

    Algumas operações de refatoração não causam alterações no arquivo de designer e, portanto, o arquivo de designer não é automaticamente verificado. O IVsRefactorNotify implementador deve solicitar um check-out do arquivo de designer, se o conteúdo for alterado pela operação de refatoração identificada. Isso é feito retornando o VSITEMID que identifica o arquivo de designer na matriz de saída. Um exemplo de um cenário em que um arquivo de designer não precisa ser verificado é quando um namespace, que é armazenado fora do arquivo de designer, é alterado. O arquivo de designer não precisa ser verificado, embora o arquivo de código gerado tenha sido alterado.

  9. Após o check-out, a hierarquia retorna da IVsHierarchyRefactorNotify.OnBefore chamada para o serviço de idioma.

  10. O serviço de linguagem executa a operação de refatoração.

  11. O serviço de linguagem notifica a hierarquia sobre a conclusão da operação de refatoração chamando os IVsHierarchyRefactorNotify.On métodos, como OnGlobalSymbolRenamed , e a hierarquia notifica todos os IVsRefactorNotify implementadores chamando os IVsRefactorNotify.On métodos, como OnGlobalSymbolRenamed . A alteração de refatoração equivalente é feita nos arquivos do designer. Isso garante que a operação de refatoração permaneça preservada.

Métodos

OnAddParams(UInt32, String, UInt32, UInt32[], String[], String[])

Chamado depois que um método tinha parâmetros adicionados.

OnBeforeAddParams(UInt32, String, UInt32, UInt32[], String[], String[], Int32)

Chamado quando um método está prestes a ter parâmetros adicionados.

OnBeforeGlobalSymbolRenamed(UInt32, UInt32[], UInt32, String[], String, Int32)

Chamado quando um símbolo está prestes a ser renomeado.

OnBeforeRemoveParams(UInt32, String, UInt32, UInt32[], Int32)

Chamado quando um método está prestes a ter parâmetros removidos.

OnBeforeReorderParams(UInt32, String, UInt32, UInt32[], Int32)

Chamado quando um método está prestes a ter parâmetros reordenados.

OnGlobalSymbolRenamed(UInt32, UInt32[], UInt32, String[], String)

Chamado depois que um símbolo é renomeado.

OnRemoveParams(UInt32, String, UInt32, UInt32[])

Chamado depois que um método tinha parâmetros removidos.

OnReorderParams(UInt32, String, UInt32, UInt32[])

Chamado depois que um método tinha parâmetros reordenados.

Aplica-se a