Visual Studio Makro für ein neues automatisches Property
Jan
13
Von:
13.01.2004
Der VisualStudio Dialog in der Klassenansicht, der ein neues Property anlegt, hält mich mehr auf, als den Vorgang zu beschleunigen.
Deshalb habe ich ein Makro geschrieben, welches automatisch ein neues Property anlegt.
Die folgende Sub kann als Makro eingefügt werden.
Für ein schnelles Ergebnis geht man wie folgt vor:
Über Menu Tools->Macros->Macros IDE die Makro IDE starten. Bei mir startet dann automatisch mein standard Makro-Module. Falls dies nicht der Fall sein sollte, wählt man aus der auf der linken Seite erscheinenden Liste ein Module aus, oder fügt ein neues hinzu. Danach die Sub von hier einfach hinein kopieren, fertig.
Zum Start des Makros kann man über den Makro Explorer (ALT+F8) auf das Makro klicken, welches dann sofort ausgeführt wird.
Möchte man einen Tastatur ShortCut hinzufügen, geht man wie folgend vor:
Im Menu Tools->Customize, dann Button Keyboard... klicken. Der Optionen Dialog erscheint mit der Vorauswahl auf Keyboard. Auf der rechten Seite des Dialogs hat man die Möglichkeit nach einem Befehl zu suchen. Es reicht hier die Eingabe von 'InsertProperty', und dieser erscheint als einziger Eintrag in der Liste.
Nun kann ein ShortCut hinzugefügt werden indem man die gewünschte Tastenkombination in dem Eingabe-Feld links neben dem Zuordnen Button eingibt.
Sub InsertProperty()
Dim ts As TextSelection = DTE.ActiveWindow.Selection
Dim Type As String = InputBox("Enter the Typename: ")
If Type.Trim.Length = 0 Then
MsgBox("You must specify a type!")
Exit Sub
End If
Dim ExternalName As String = InputBox("Enter the external (public) property name: ")
If Type.Trim.Length = 0 Then
MsgBox("You must specify an external name.")
Exit Sub
End If
Dim InternalName As String = InputBox("Enter the internal (private) data name (leave blank for automatic name ): ")
If InternalName.Trim().Length = 0 Then InternalName = "_" & ExternalName
Dim vp As Integer = ts.AnchorPoint.AbsoluteCharOffset
ts.NewLine()
ts.Insert("/// " & ExternalName)
ts.NewLine()
ts.Insert("private " & Type & " " & InternalName & ";")
ts.NewLine()
ts.Insert("public " & Type & " " & ExternalName)
ts.NewLine()
ts.Insert("{")
ts.NewLine()
ts.Insert("get {")
ts.NewLine()
ts.Insert("return this." & InternalName & ";")
ts.NewLine()
ts.Insert("}")
ts.NewLine()
ts.Insert("set {")
ts.NewLine()
ts.Insert("this." & InternalName & " = value;")
ts.NewLine()
ts.Insert("}")
ts.NewLine()
ts.Insert("}")
'ts.MoveToPoint(vp, True)
ts.MoveToAbsoluteOffset(vp, True)
ts.SmartFormat()
End Sub
?>