IVsHierarchyRefactorNotify Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Benachrichtigt die Hierarchie über Umgestaltungsvorgänge.
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
- Attribute
Hinweise
Zum unterstützen von refactoringvorgängen muss das Projekt System die implementieren IVsHierarchy , die eine Hierarchie, eine IVsProject und eine-Schnittstelle darstellt IVsHierarchyRefactorNotify . Außerdem müssen Sie einen Sprachdienst implementieren, um Unterstützung für die Features bereitzustellen, die mit der Bearbeitung des Quellcodes verknüpft sind, einschließlich der Refactoring-Vorgänge. Weitere Informationen zum Sprachdienst finden Sie unter Legacy-Sprachdienst Schnittstellen.
Durch die Implementierung von IVsHierarchyRefactorNotify Stellen Sie Ihrem Sprachdienst die Möglichkeit zur Verfügung, die IVsHierarchy Schnittstelle über Refactoring-Vorgänge zu benachrichtigen, z. b. symbolische Umbenennung oder Neuanordnung von Parametern. Wenn die Hierarchie Buildanbieter, Einzel Datei-Generatoren oder einige andere Dienste zum Generieren von Code verwendet, muss Sie einen Verweis auf das Objekt abrufen, das die- IVsRefactorNotify Schnittstelle implementiert.
Jedes Projekt System und ein Sprachdienst definieren eine bestimmte Möglichkeit, einen Verweis auf das Objekt zu erhalten IVsRefactorNotify . Beispielsweise erhalten die Visual Basic Visual C# Visual J# Desktop Projektsysteme, oder einen Verweis auf das Objekt, das IVsRefactorNotify durch Aufrufen von IUnknown::QueryInterface für das Objekt implementiert, das implementiert IVsSingleFileGenerator . Die- Visual Basic ,- Visual C# oder- Visual J# Webprojekt Systeme werden QueryService mithilfe eines aufgerufen, Guid das unter dem Registrierungsschlüssel HKLM\Software\Microsoft\VisualStudio\8.0\Projects \ {Project-System-GUID} \fileextensions \ {File Extension} \refactornotify registriert ist. Die Hierarchie übergibt die Benachrichtigung an das- IVsRefactorNotify Objekt, um den Umgestaltungs Vorgang in die Designer Datei einzubinden oder den Vorgang zu beenden und eine Fehlermeldung über IErrorInfo zurückzugeben. Die Designer Datei kann jede der von bereitgestellten Eingabedateien sein Visual Studio , z. b. resx-, XSD-,. Settings-,. Map-und. MyApp-Dateien oder eine beliebige andere Dateierweiterung, die einem Code Generator oder einem Buildanbieter zugeordnet ist.
Damit der vollständige Umgestaltungs Vorgang erfolgreich abgeschlossen werden kann, muss die-Hierarchie die an die übergebenen Dateien IVsHierarchyRefactorNotify und die von den entsprechenden Methoden Aufrufen zurückgegebenen Dateien Auschecken IVsRefactorNotify .
In der Hierarchie muss eine Fehlermeldung im Meldungs Feld angezeigt werden, wenn der Refactoring-Vorgang fehlschlägt.
Ablauf des Vorgangs
Der Benutzer ruft symbolische Umbenennungen oder einen anderen Refactoring-Vorgang auf.
Der Visual Studio Sprachdienst bestimmt, von welchen Code Dateien der Vorgang betroffen ist.
Der Sprachdienst ruft
IVsHierarchyRefactorNotify.OnBeforeMethoden auf, um die Hierarchie zu benachrichtigen, welche Dateien von diesem Vorgang betroffen sind.Die Hierarchie bestimmt, ob betroffene Dateien aus den Designer Dateien generiert werden.
Wenn Dateien generiert werden, ruft die Hierarchie einen Verweis auf das Objekt ab, das implementiert, IVsRefactorNotify und sendet die
IVsRefactorNotify.OnBeforeBenachrichtigungen IVsRefactorNotify für jede generierte Datei an den Implementierer.Der IVsRefactorNotify Implementierer kann den Vorgang beenden, indem ein Fehler zurückgegeben und ein Fehler durch Aufrufen der-Methode festgelegt wird
M:Microsoft.VisualStudio.Shell.Interop.IVsUIShell.SetErrorInfo(System.Int32,System.String,System.UInt32,System.String,System.String). Wenn derIVsRefactorNotifyImplementierer den Vorgang nicht abbrechen möchte, bestimmt er, welche Designer Dateien der Vorgang betrifft, und gibt den Satz von Dateien IVsHierarchyRefactorNotify im Out-Array an zurückVSITEMID.Hinweis
Der IVsRefactorNotify Implementierer darf die Designer Dateien an dieser Stelle nicht aktualisieren. Die Dateien müssen während des zweiten aufrufyaufrufes Beispiels
IVsRefactorNotify.OnWeise während des Methoden OnGlobalSymbolRenamed Aufrufes aktualisiert werden. Die-IVsRefactorNotify.OnBeforeMethodenaufrufe ermöglichen der Hierarchie das Auschecken der generierten Dateien als Einheit. Die-Hierarchie bietet die Möglichkeit, den gesamten Vorgang zu unterbinden, bevor Änderungen vorgenommen werden, wenn einer der Code-Generatoren den umgestalten-Vorgang nicht verarbeiten kann.Wenn der IVsRefactorNotify Implementierer einen Fehler zurückgibt, muss die Hierarchie den Benutzer über den Fehler benachrichtigen. Die Hierarchie kann den Vorgang fortsetzen oder den Vorgang abbrechen und einen Stoop-Vorgang durchführen. Wenn der Vorgang beendet wird, enthält das HRESULT die folgenden Werte:
E_ABORT
OLE_E_PROMPTSAVECANCELLED
OLECMDERR_E_CANCELED
HR_E_CSHARP_USER_CANCEL.
Wenn der IVsRefactorNotify Implementierer erfolgreich zurückgibt oder der Aufrufer anfordert, bei einem Fehler fortzufahren, muss die Hierarchie die an übergebenen Dateien IVsHierarchyRefactorNotify und von den entsprechenden Methoden aufrufen zurückgegebene Dateien Auschecken IVsRefactorNotify
Hinweis
Einige Umgestaltungs Vorgänge verursachen keine Änderungen in der Designer Datei, sodass die Designer Datei nicht automatisch ausgecheckt wird. Der IVsRefactorNotify Implementierer muss ein Auschecken der Designer Datei anfordern, wenn der Inhalt durch den identifizierten Refactoring-Vorgang geändert wird. Dies wird erreicht, indem die vsitemid, die die Designer Datei im Out-Array identifiziert, zurückgegeben wird. Ein Beispiel für ein Szenario, in dem eine Designer Datei nicht ausgecheckt werden muss, ist, wenn ein Namespace, der außerhalb der Designer Datei gespeichert ist, geändert wird. Die Designer Datei muss nicht ausgecheckt werden, auch wenn sich die generierte Codedatei geändert hat.
Nach dem Auschecken gibt die Hierarchie den
IVsHierarchyRefactorNotify.OnBeforeSprachdienst zurück.Der Sprachdienst führt den Umgestaltungs Vorgang aus.
Der Sprachdienst benachrichtigt die Hierarchie über den Abschluss der Umgestaltung durch Aufrufen der-
IVsHierarchyRefactorNotify.OnMethoden, z. b OnGlobalSymbolRenamed ., und die Hierarchie benachrichtigt alle IVsRefactorNotify Implementierer durch Aufrufen der-IVsRefactorNotify.OnMethoden, z OnGlobalSymbolRenamed . b.. Die entsprechende Umgestaltung ändert sich in den Designer Dateien. Dadurch wird sichergestellt, dass der Refactoring-Vorgang beibehalten wird.
Methoden
| OnAddParams(UInt32, String, UInt32, UInt32[], String[], String[]) |
Wird aufgerufen, nachdem einer Methode Parameter hinzugefügt wurden. |
| OnBeforeAddParams(UInt32, String, UInt32, UInt32[], String[], String[], Int32) |
Wird aufgerufen, wenn eine Methode im Begriff ist, Parameter hinzuzufügen. |
| OnBeforeGlobalSymbolRenamed(UInt32, UInt32[], UInt32, String[], String, Int32) |
Wird aufgerufen, wenn ein Symbol im Begriff ist umbenannt werden. |
| OnBeforeRemoveParams(UInt32, String, UInt32, UInt32[], Int32) |
Wird aufgerufen, wenn eine Methode im Begriff ist, Parameter zu entfernen. |
| OnBeforeReorderParams(UInt32, String, UInt32, UInt32[], Int32) |
Wird aufgerufen, wenn eine Methode im Begriff ist, Parameter aufzuzeichnen. |
| OnGlobalSymbolRenamed(UInt32, UInt32[], UInt32, String[], String) |
Wird aufgerufen, nachdem ein Symbol umbenannt wurde. |
| OnRemoveParams(UInt32, String, UInt32, UInt32[]) |
Wird aufgerufen, nachdem Parameter aus einer Methode entfernt wurden. |
| OnReorderParams(UInt32, String, UInt32, UInt32[]) |
Wird aufgerufen, nachdem bei einer Methode die Parameter neu angeordnet wurden. |