Imports EnvDTE Imports System.Diagnostics Public Module ViewStateMacros Private Function GetSimplePropertyVB(ByVal line As String) As String 'Make sure we are dealing with selected text in the form of: 'Variable_Name Type Default_Value Dim Words() As String = line.Trim().Split() If Words.Length < 3 Then Return "Input in invalid format! Use PropName Type Default_Value" Else Return "Public Property " & Words(0) & " As " & Words(1) & vbNewLine & _ vbTab & "Get" & vbNewLine & _ vbTab & vbTab & "Dim o as Object = ViewState(""" & Words(0) & """)" & vbNewLine & _ vbTab & vbTab & "If o Is Nothing Then" & vbNewLine & _ vbTab & vbTab & vbTab & "Return " & String.Join(" ", Words, 2, Words.Length - 2) & vbNewLine & _ vbTab & vbTab & "Else" & vbNewLine & _ vbTab & vbTab & vbTab & "Return CType(o, " & Words(1) & ")" & vbNewLine & _ vbTab & vbTab & "End If" & vbNewLine & _ vbTab & "End Get" & vbNewLine & _ vbTab & "Set (ByVal Value as " & Words(1) & ")" & vbNewLine & _ vbTab & vbTab & "ViewState(""" & Words(0) & """) = Value" & vbNewLine & _ vbTab & "End Set" & vbNewLine & _ "End Property" & vbNewLine & vbNewLine End If End Function Public Sub CreateSimplePropertyVB() Dim TS As TextSelection = DTE.ActiveDocument.Selection Dim Insertion As String, Line As String Dim Lines() As String = TS.Text.Split(vbNewLine) For Each Line In Lines Insertion &= GetSimplePropertyVB(Line) Next TS.Delete() TS.Insert(Insertion) End Sub Private Function GetSimplePropertyCSharp(ByVal line As String) As String 'Make sure we are dealing with selected text in the form of: 'Variable_Name Type Default_Value Dim Words() As String = line.Trim().Split() If Words.Length < 3 Then Return "Input in invalid format! Use PropName Type Default_Value" Else Return "public " & Words(1) & " " & Words(0) & vbNewLine & _ vbTab & "{" & vbNewLine & _ vbTab & vbTab & "get" & vbNewLine & _ vbTab & vbTab & "{" & vbNewLine & _ vbTab & vbTab & vbTab & "object o = ViewState[""" & Words(0) & """];" & vbNewLine & _ vbTab & vbTab & vbTab & "if (o == null)" & vbNewLine & _ vbTab & vbTab & vbTab & vbTab & "return " & String.Join(" ", Words, 2, Words.Length - 2) & ";" & vbNewLine & _ vbTab & vbTab & vbTab & "else" & vbNewLine & _ vbTab & vbTab & vbTab & vbTab & "return (" & Words(1) & ") " & Words(0) & ";" & vbNewLine & _ vbTab & vbTab & "}" & vbNewLine & _ vbTab & vbTab & "set" & vbNewLine & _ vbTab & vbTab & "{" & vbNewLine & _ vbTab & vbTab & vbTab & "ViewState[""" & Words(0) & """] = value;" & vbNewLine & _ vbTab & vbTab & "}" & vbNewLine & _ "}" & vbNewLine & vbNewLine End If End Function Public Sub CreateSimplePropertyCSharp() Dim TS As TextSelection = DTE.ActiveDocument.Selection Dim Insertion As String, Line As String Dim Lines() As String = TS.Text.Split(vbNewLine) For Each Line In Lines Insertion &= GetSimplePropertyCSharp(Line) Next TS.Delete() TS.Insert(Insertion) End Sub End Module