vs2003最常用,最实用的宏——重构属性(源代码)

原创 2006年06月13日 11:17:00

提起VS2003的宏,可能有的人常用,有的人从来不用。
可是,对于我这种“能让机器干,就自己绝不动手”的人来说,肯定还是会用到的。
常常为了写宏没有写代码而挨批,

自己写的宏一般都比较专用,专门用在项目的某个地方,一旦有什么更改,可以立刻用宏来重新构造那些大量复杂重复的代码。但是,也有一些非常好的宏,比较通用,在这里大家一起讨论一番。例如这个用来将字段转化为属性的宏就很好用,并且,我个人觉得要比vs2005的[重构]要好,要实用,而且这个宏还可以一次转换多行字段,是2005没法达到的。

Imports EnvDTE
Imports System.Diagnostics
Imports System.Text.RegularExpressions


Public Module forCSharp

 Sub ReCreate()

  Dim line, originalCode As String

  If DTE.ActiveDocument Is Nothing Then Return

  Dim txt As TextSelection
  txt = CType(DTE.ActiveDocument.Selection, TextSelection)
  originalCode = txt.Text
  Dim variableName As String
  Dim publicName As String
  Dim privateName As String
  Dim dataType As String
  Dim propertyProcedures As New System.Text.StringBuilder
  Dim lines() As String
  lines = Split(originalCode, vbLf)
  Dim r As Regex
  r = New Regex( _
   "/s*(?<typename>/w*)" & _
   "/s*(?<varname>/w*)/s*/;", _
   RegexOptions.IgnoreCase Or _
   RegexOptions.ExplicitCapture)

  For Each line In lines
   line = line.Trim
   If Not line = String.Empty Then
    Dim mtch As Match
    mtch = r.Match(line)
    If mtch.Success Then
     variableName = _
       mtch.Groups("varname").Value.Trim
     dataType = _
       mtch.Groups("typename").Value.Trim

     variableName = IIf(variableName.StartsWith("_"), variableName.Substring(1), variableName)
     variableName = IIf(variableName.StartsWith("m_"), variableName.Substring(2), variableName)

     publicName = variableName.Substring(0, 1).ToUpper() & variableName.Substring(1)
     privateName = "_" & variableName.Substring(0, 1).ToLower() & variableName.Substring(1)

     propertyProcedures.AppendFormat(vbCrLf _
     & "  private {1} {2};" & vbCrLf _
     & "  public {1} {0}" & vbCrLf _
     & "  {{" & vbCrLf _
     & "   get" & vbCrLf _
     & "   {{" & vbCrLf _
     & "    return {2};" & vbCrLf _
     & "   }}" & vbCrLf _
     & "" & vbCrLf _
     & "   set" & vbCrLf _
     & "   {{" & vbCrLf _
     & "    {2} = value;" & vbCrLf _
     & "   }}" & vbCrLf _
     & "  }}" & vbCrLf, _
       publicName, _
       dataType, privateName)
    End If
   End If
  Next

  DTE.UndoContext.Open("重构属性")
  txt = CType(DTE.ActiveDocument.Selection, TextSelection)
  txt.Delete()
  txt.Insert(propertyProcedures.ToString, _
  vsInsertFlags.vsInsertFlagsContainNewText Or vsInsertFlags.vsInsertFlagsInsertAtEnd)

  'txt.Text = propertyProcedures.ToString()
  txt.SmartFormat()
  DTE.UndoContext.Close()

 

 End Sub

End Module

相关文章推荐

GridView最基本最常用最实用技巧

  • 2008年12月15日 09:36
  • 47KB
  • 下载

Excel 2003 实用基础课程——第2章 格式设定技巧

1. (1)如何在数字前加0,即列具有相同的宽度?         选中单元格,设置单元格格式-->数字,在分类中选择“自定义”,然后         在类型中输入格式字符即可。    (2)如何将数...

Excel 2003 实用基础课程——第4章 查找替换数据

1. 查找时如果选定了区域则只在区域内查找 2. 如果一个区域中有部分是数字,我让其中所有数字乘2,怎么办?    在区域外的一个单元格中写一个2,复制此单元格,然后选定区域,编辑|定位,   ...

Excel 2003 实用基础课程——第6章 计算公式设定

1. 选定单元格时,状态栏有求和函数和其它一些函数显示你所选单元格的结果 2. 单元格左上角为什么会出现小三角形?    工具|选项|错误检查 的“允许后台错误检查”打开了,还有一点要注意,如果勾...

Excel 2003 实用基础课程——第0章 基本准备工作

视频观看地址:http://www.youku.com/playlist_show/id_705013.html  1. 为了启动Excel方面,可以在 开始-->所有程序-->Microsoft ...

背景建模之:贝叶斯背景建模—— cvbgfg_acmmm2003 源代码注释(二)

模型使用的时候,一定要从微观考虑,即将每个点作为小模型考虑。因为种种策略最后都是应用到每个点上去的。这点思维转换一定要有,初学图形图像方面的,尤其是初用opencv的总是养成直接从每个图每个图考虑的思...

VS2003 MFC 绝对经典实用的示例代码

  • 2013年06月11日 22:41
  • 43.02MB
  • 下载

VS2003——BULID编译(之前的页面显示不出来,郁闷,分开来写!)

最近遇到编译发布的问题,以前也没怎么写过,对是用别人写的去编译,现在自己动手,感觉蛮有趣的! VS2003:当前编译的项目有二个,存在公共部分比如后台的DLL都是通用的,只有前台的登录 主页 和个别...

安装VS2003出现问题——Microsoft FrontPage 2000 Web 扩展客户端安装不成功 及其解决方法

更多请关注:http://velep.com/ 前言: 之前在公司安装VS2003的时候,没有出现过问题,很顺利,但在家安装时出现过问题,当时不记得怎么解决的。 今天在自己笔记本上再次安装VS2...
  • reille
  • reille
  • 2011年05月08日 16:01
  • 15660

vs2003项目转换成vs2010项目常出错误

http://forums.codeguru.com/archive/index.php/t-380568.html I Managed to locate the shortcut to acti...
  • cs_21cn
  • cs_21cn
  • 2012年08月30日 15:32
  • 6314
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vs2003最常用,最实用的宏——重构属性(源代码)
举报原因:
原因补充:

(最多只允许输入30个字)