Click here to Skip to main content
Licence CPOL
First Posted 25 Nov 2008
Views 14,809
Downloads 60
Bookmarked 22 times

Generate Properties from Class Variables in Visual Studio .NET

By | 25 Nov 2008 | Article
Generate properties from class variables using macro

Introduction

One of the nice things about Visual Studio is its macro support. You can create and use macros in Visual Studio .NET to increase productivity. One feature which most developers want is a quick property generation from a list of class variables, but Visual Studio .NET has no shortcut for it. To achieve this, you have to record or create a macro.

So below is the macro that generates the automatic properties from the member variables.

Just copy the text below and then open Visual Studio .NET. Go to Tools-> Macro->Macros IDE menu item. A new window will open. Click on mymacros and paste the below text and build it.

After building, open your Visual Studio project. Go to Tools->Options. A dialog will appear. Click on keyboard in Environment. Select your macro and assign a shortcut. For example Shift + F2.

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics
Imports System.Text

Public Module Expand
Public Sub ExpandPrivateMembersFronSelection()
Dim TS As TextSelection = 

DTE.ActiveDocument.Selection
Dim strResult As String, Line As String
Dim Lines() As String = 

TS.Text.Split(vbNewLine)
For Each Line In Lines
strResult &= GetstrResult(Line)
Next
TS.EndOfLine()
TS.NewLine()
TS.Insert(vbCrLf & "#region ""Public 

Properties""" & vbCrLf & strResult & 

"#endregion" & vbCrLf)

DTE.ExecuteCommand("Edit.FormatDocument")
End Sub

Private Function GetstrResult(ByVal text As 

String) As String
Try
If (text.Contains("private")) Then
text = text.Replace("private", 

"")
End If
If (text.Contains(";")) Then
text = text.Replace(";", "")
End If
Dim words() As String = 

text.Trim.Split()

'System.Windows.Forms.MessageBox.Show(words(1))
If words.Length < 2 Then
Return ""
Else
Dim strResult As New 

StringBuilder
strResult.AppendLine()

strResult.AppendLine(String.Format("public {0} 

{1}", words(0), StrConv(words(1)(0), 

VbStrConv.ProperCase)) & words(1).Substring(1))
strResult.AppendLine(vbTab & "{ 

get { ")
strResult.AppendLine(vbTab & 

vbTab & "return " & words(1) & ";")
strResult.AppendLine(vbTab & 

"}")

strResult.AppendLine(String.Format(vbTab & 

"set"))
strResult.AppendLine(vbTab & 

vbTab & " { " & words(1) & " = value;")
strResult.AppendLine(vbTab & 

"}")
strResult.AppendLine("}")
Return strResult.ToString
End If
Catch ex As Exception

System.Windows.Forms.MessageBox.Show(ex.ToString

)
End Try

End Function

End Module

Issues

Currently it will give you incorrect results if the input is:

string p = string.Empty;

You can customize the macro according to your needs. The valid inputs are:

string p;

private string q;

Just select and press your assigned shortcut.

History

  • 25th November, 2008: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Adeel Hussain

Web Developer
Allainet (Pvt) Ltd
Pakistan Pakistan

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
Generalmore explaination PinmemberDonsw16:01 8 Feb '09  
GeneralNice Effort PinmemberMuhammad Shahid Farooq23:25 25 Nov '08  
Adeel, You are doing great effort.

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web02 | 2.5.120604.1 | Last Updated 25 Nov 2008
Article Copyright 2008 by Adeel Hussain
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid