Banalissima macro per creare i blocchi property in VB.NET

Banale, lo so... ma dopo 3 volte che riscrivo le stesse cose mi viene l'orticaria!

E così intanto provo anche IMHO...

    Sub WriteSimpleVBProperty()
        
Dim propertyName As String String.Empty
        Dim 
privateMember As String String.Empty
        Dim 
propertyType As String = "String"
        propertyName = 
InputBox("Property name:", "WriteSimpleVBProperty", propertyName)
        privateMember = 
InputBox("Private member:", "WriteSimpleVBProperty", privateMember)
        propertyType = 
InputBox("Property type:", "WriteSimpleVBProperty", propertyType)

        
Dim fx As New System.Text.StringBuilder
        fx.Append(
String.Format("    Private {0} As {1}", privateMember, propertyType))
        
Select Case propertyType.ToLower
            
Case "string"
                fx.Append(" = String.Empty")
            
Case "date", "datetime"
                fx.Append(" = DateTime.MinValue")
        
End Select
        
fx.Append(ControlChars.Cr)
        fx.Append(
String.Format("    Public Property {0}() As {1}", propertyName, propertyType))
        fx.Append(ControlChars.
Cr)
        fx.Append("        Get")
        fx.Append(ControlChars.
Cr)
        fx.Append(
String.Format("            Return {0}", privateMember))
        fx.Append(ControlChars.
Cr)
        fx.Append("        End Get")
        fx.Append(ControlChars.
Cr)
        fx.Append(
String.Format("        Set(ByVal Value As {0})", propertyType))
        fx.Append(ControlChars.
Cr)
        fx.Append(
String.Format("            {0} = Value", privateMember))
        fx.Append(ControlChars.
Cr)
        fx.Append("        End Set")
        fx.Append(ControlChars.
Cr)
        fx.Append("    End Property")
        fx.Append(ControlChars.
Cr)

        DTE.ActiveDocument.Selection.TopPoint.CreateEditPoint.Insert(fx.ToString)

        fx = 
Nothing
    End Sub

powered by IMHO

Print | posted @ mercoledì 29 dicembre 2004 14:05

Comments on this entry:

Gravatar # re: Banalissima macro per creare i blocchi property in VB.NET
by Mario Duzioni at 06/01/2005 01:36

Ehm... scusa il ritardo nella risposta (sai com'è... passate le feste subito giù col lavoro a manetta!)

Al primo impatto sembra molto + evoluta la tua, devo dire... domani la provo al volo!!!

Per l'emoticon ho usato semplicemente la funzione replace delle option del blog (!).
Gravatar # re: Banalissima macro per creare i blocchi property in VB.NET
by python at 06/04/2005 18:38

Ciao,navigando ho trovato il tuo snippet e l'ho rifatto in Vb.Net ;P)))).. magari può servire a qualcuno.

Imports EnvDTE
Imports System.Diagnostics
Imports System.Windows
Imports System.Windows.Forms
Imports System
Imports System.Drawing


Public Module PropertySetter

Sub WriteGetterAndSetter()
Dim projitem As ProjectItem = DTE.ActiveDocument.ProjectItem
Dim filecm As FileCodeModel = projitem.FileCodeModel
Dim celt As CodeElement = filecm.CodeElements.Item(1)
Dim celttype As CodeType
If (TypeOf celt Is CodeNamespace) Then
celt = celt.members.item(1)
End If
If (TypeOf celt Is CodeType) Then
celttype = CType(celt, CodeType)
Else
Throw New Exception("Didn't find a type definition as first thing in file or find a namespace as the first thing with a type inside the namespace.")
End If


Dim ep As EditPoint = celttype.GetStartPoint(vsCMPart.vsCMPartHeader).CreateEditPoint()

Try
DTE.UndoContext.Open("Insert public Properties")
Dim objTextDoc As Window
Dim objMovePt As TextSelection

objTextDoc = DTE.ActiveDocument.ActiveWindow
objMovePt = objTextDoc.Selection
ep.MoveToPoint(objMovePt.TopPoint)
'ep.LineUp()

'' Do comment.

ep.Insert(Microsoft.VisualBasic.Constants.vbTab & "#region ""Properties""" & Microsoft.VisualBasic.Constants.vbCrLf)
'' Iterate over code elements emitting doc comments for functions.
For Each celt In celttype.Members
If (celt.Kind = vsCMElement.vsCMElementVariable) Then
Dim codefun As CodeVariable = celt
If (codefun.Access = vsCMAccess.vsCMAccessPrivate) Then
ep.Insert(Microsoft.VisualBasic.Constants.vbCrLf)

ep.Insert(Microsoft.VisualBasic.Constants.vbTab & "Public Property " & codefun.Name.Substring(1, codefun.Name.Length - 1) & " as " & codefun.Type.AsString)
ep.Insert(Microsoft.VisualBasic.Constants.vbCrLf)
ep.Insert(Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & "Get" & Microsoft.VisualBasic.Constants.vbCrLf & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbCrLf & codefun.Name.Substring(1, codefun.Name.Length - 1))
ep.Insert(" = " & codefun.Name & Microsoft.VisualBasic.Constants.vbCrLf)
ep.Insert(Microsoft.VisualBasic.Constants.vbCrLf & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & "End Get")
ep.Insert(Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbCrLf)
ep.Insert(Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & "set" & Microsoft.VisualBasic.Constants.vbCrLf & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbCrLf)
ep.Insert(Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & codefun.Name & " = Value" & Microsoft.VisualBasic.Constants.vbCrLf)
ep.Insert(Microsoft.VisualBasic.Constants.vbCrLf & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & "End Set" & Microsoft.VisualBasic.Constants.vbCrLf & "End Property")
End If
End If
Next
ep.Insert(Microsoft.VisualBasic.Constants.vbCrLf & Microsoft.VisualBasic.Constants.vbCrLf & "#End Region" & Microsoft.VisualBasic.Constants.vbCrLf)
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
DTE.UndoContext.Close()
End Try
End Sub
End Module
Gravatar # re: Banalissima macro per creare i blocchi property in VB.NET
by Mario Duzioni at 06/04/2005 21:18

Ciao, in realtà anche quello nel mio post era in .NET, ma effettivamente forse il codice era più "bruttino" essendo frutto di un "registra macro" o giù di lì (non ricordo bene...)

Comunque mi guardo bene il tuo ed eventualmente lo sostituisco al mio in VS.

Bye!
Comments have been closed on this topic.