IVsHierarchyRefactorNotify Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
O usuário invoca a renomeação simbólica ou qualquer outra operação de refatoração.
O Visual Studio serviço de linguagem determina quais arquivos de código a operação afeta.
O serviço de linguagem chama
IVsHierarchyRefactorNotify.OnBeforemétodos para notificar a hierarquia quais arquivos são afetados por essa operação.A hierarquia determina se os arquivos afetados são gerados a partir dos arquivos do designer.
Se os arquivos forem gerados, a hierarquia obterá uma referência ao objeto que implementa IVsRefactorNotify e enviará as
IVsRefactorNotify.OnBeforenotificações para o IVsRefactorNotify implementador para cada arquivo gerado.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 oIVsRefactorNotifyimplementador 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.Onmétodos, por exemplo, durante a OnGlobalSymbolRenamed chamada do método. AsIVsRefactorNotify.OnBeforechamadas 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.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.
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.
Após o check-out, a hierarquia retorna da
IVsHierarchyRefactorNotify.OnBeforechamada para o serviço de idioma.O serviço de linguagem executa a operação de refatoração.
O serviço de linguagem notifica a hierarquia sobre a conclusão da operação de refatoração chamando os
IVsHierarchyRefactorNotify.Onmétodos, como OnGlobalSymbolRenamed , e a hierarquia notifica todos os IVsRefactorNotify implementadores chamando osIVsRefactorNotify.Onmé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. |