ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:128.56KB ,
资源ID:15744151      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15744151.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c#变量生成属性Word格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c#变量生成属性Word格式.docx

1、Imports SystemImports EnvDTEImports EnvDTE80Imports System.DiagnosticsPublic Module EditorHelper 为一个参数封装一般属性访问器 Public Sub EncapsulateField() Dim projectItem As ProjectItem = DTE.ActiveDocument.ProjectItem Dim fileCodeModel As FileCodeModel = projectItem.FileCodeModel得到当前选定的内容 Dim selectText As Text

2、Selection = DTE.ActiveDocument.Selection获取到当前光标的位置 Dim point As TextPoint = selectText.ActivePoint Try Dim codeElement As CodeElement = fileCodeModel.CodeElementFromPoint(point, vsCMElement.vsCMElementVariable) If (codeElement Is Nothing) Then Return End If Debug.Assert(codeElement.Kind = vsCMElemen

3、t.vsCMElementVariable) Dim codeVar As CodeVariable = CType(codeElement, CodeVariable) Dim fieldName As String = codeVar.Name Dim codeClass As CodeClass = CType(codeVar.Parent, CodeClass) AddPropertyToClass(codeClass, fieldName, codeVar.Type) Catch ex As Exception吃掉异常,不做处理或者提示 End Try End Sub Public

4、Sub EncapsulateAllFields() Dim codeElement As CodeElement = fileCodeModel.CodeElementFromPoint(point, vsCMElement.vsCMElementClass) Dim codeClass As CodeClass = CType(codeElement, CodeClass) Dim i As Integer For i = 1 To codeClass.Members.Count如果属性已经定义,会抛出异常在这里处理异常,即使新增的属性已经定义,也可以继续处理下面的代码 Dim eleme

5、nt As CodeElement = codeClass.Members.Item(i) If (element.Kind = vsCMElement.vsCMElementVariable) Then Dim codeVariable As CodeVariable = CType(element, CodeVariable) If (Not codeVariable.IsShared) Then 静态变量不需要增加属性 AddPropertyToClass(codeClass, codeVariable.Name, codeVariable.Type)吃掉异常 Next可能并没有选择有效

6、的类定义,这时会抛出异常,忽略根据成员的名称的类型,在类对象中插入属性 Private Sub AddPropertyToClass(ByVal codeClass As CodeClass, ByVal fieldName As String, ByVal fieldType As Object)生成属性的名称,规则是首先字母大写。如果变量的开头为“_”,移除 Dim propertyName As String = fieldName If (propertyName.StartsWith(_) Then propertyName = propertyName.TrimStart(c) p

7、ropertyName = propertyName.Substring(0, 1).ToUpper() & propertyName.Substring(1)创建属性对象-1表示代码插入到类的最下方vsCMAccess.vsCMAccessPublic表示为public Dim codeProperty As CodeProperty = codeClass.AddProperty(propertyName, propertyName, fieldType, -1, vsCMAccess.vsCMAccessPublic)Getter Dim getter As CodeFunction =

8、 codeProperty.Getter Dim getterPoint As TextPoint = getter.GetStartPoint(vsCMPart.vsCMPartBody) Dim getterEditPoint As EditPoint = getterPoint.CreateEditPoint() getterEditPoint.Delete(getter.GetEndPoint(vsCMPart.vsCMPartBody) getterEditPoint.Insert(vbCrLf) 插入回车符 getterEditPoint.LineUp() getterEditPo

9、int.Indent(, 4) 缩进4个位置 getterEditPoint.Insert(return & fieldName &;)Setter Dim setter As CodeFunction = codeProperty.Setter Dim setterPoint As TextPoint = setter.GetStartPoint(vsCMPart.vsCMPartBody) Dim setterEditPoint As EditPoint = setterPoint.CreateEditPoint() setterEditPoint.Insert(vbCrLf) sette

10、rEditPoint.LineUp() setterEditPoint.Indent(, 4) setterEditPoint.Insert(fieldName & = value;End Module我定义了两个Public方法:EncapsulateField和EncapsulateAllFields,分别用于为类的一个变量封装属性,或者为类中所有的变量(非静态)封装属性。使用上面的宏的方法很简单,选择“工具”“宏”“宏资源管理器”就可以看到我们已经创建的宏方法,如下图所示:假如你已经编写了这样一段代码:using System;using System.Collections.Gener

11、ic;using System.Text;namespace Demo public class Person private int _id; private string _name; private DateTime _birthDay; 将光标移到“_name”变量上,然后双击“EncapsulateField”宏,就运行了该宏。运行后,你可以得到这样的代码: public string Name get return _name; set _name = value;可以看到“EncapsulateField”宏已经为private string _name;创建了相应的属性。EncapsulateAllFields宏只需要将光标放在Person类的代码区域中,就可以正常执行。例如针对上面的代码,EncapsulateAllFields后可以为Person类中的每一个变量都生成相应的属性。(注:上面的代码中Name属性已经有定义,所有试图再添加Name属性时会抛出异常,在EncapsulateAllFields宏定义中,已经将该异常吃掉,所以,可以正确地为所有变量生成属性)。运行后的代码如下: private DateTime _birth

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1