我可以自定义为VB.net中的属性自动生成的代码

时间:2012-11-13 19:43:45

标签: .net vb.net visual-studio-2010

我通过改变某些类的接口实现顺序为自己挖了个洞。就目前而言,我需要经历并扩展很多属性来实现Get和Set。 Get和Set方法非常相似,但却很难实现自动化。例如:

Public Property SpecificTable as SpecificTableType

我有类似的属性,我需要扩展到类似的东西:

Public Property SpecificTable as SpecificTableType
Get
  Return DirectCast(Me.Table, SpecificTableType)
End Get
Set(ByVal value as SpecificTableType)
  Me.Table = value
End Set

它非常简单,当我只在属性下输入Get并点击Enter时,VS Studio会自动生成很多内容,包括Set(ByVal value as SpecificTableType)

这让我感到奇怪,片段放在一边,因为我已经定义了属性,VS如何完成这个自动生成,我可以自定义吗?它会让我的手指有些痛苦。

2 个答案:

答案 0 :(得分:1)

Visual Studio默认情况下不允许您自定义代码生成的这一方面,除了允许您禁用“结束构造”行的自动插入(End If,End Get等)。

有一些扩展允许模板驱动的代码生成,如:http://visualstudiogallery.msdn.microsoft.com/4fbfd05a-f3e8-4f79-b912-def3e9cb28fc?SRC=VSIDE

看看这是否适合你的账单。

答案 1 :(得分:1)

这是一种难以实现的方法,但如果您想花时间学习Roslyn并编写代码问题,这绝对是一个答案。

使用Microsoft Roslyn,一个编译器作为服务项目,允许您访问解析器,编译器(语义)功能。你可以用Roslyn做的是创建一个基于文件的抽象语法树(循环遍历所有类型的文件),并为每个AST搜索不包含显式定义的getter和setter的属性,并将AST替换为以你喜欢的方式拥有道具。

如果我需要重做这个简单替换应用程序不会做的事情,我会这样做。

检查这些:http://msdn.microsoft.com/en-us/vstudio/hh500769.aspx http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx