彩票走势图

CodeRush如何快速自动生成ToString()

原创|使用教程|编辑:郝浩|2013-10-17 09:53:07.000|阅读 422 次

概述:本文演示了CodeRush如何快速自动生成ToString() 并输出每个类属性的名称和值。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

之前有客户问到:CodeRush 能不能快速自动生成ToString()?如果它还能输出每个类属性的名称和值就更好了。经过仔细研究,我终于找到了最快捷的方式,下面在这里分享给大家。

我采用的方法是创建模板。一共要创建三个模板:Iterating Template,Item Template和Delimiting Template。

  • Iterating Template由用户触发,它控制属性的迭代。
  • Item Template:代表每个属性释放的文本
  • Delimiting Template:用于决定Item Template调用文本的位置

如前所述,Iterating Template是直接由用户来调用的,所以必须得取个比较好的名字。我不是很擅长于取名,这里我将它命名为ToStringPropertyMethod。当用户输入ToStringPropertyMethod并按下空格键,这个模板便会被调用。

这是模板的主体:

public override string ToString()
{
return «ForEach(Property,PropertyEach,,PropertySeparator)»;
}

这段代码是由CodeRush解析的TextCommand。TextCommand由'ForEach'调用,最多需要5个参数。在这个例子中我们只需要3个参数就可以了。

  • 'Property'表示要对遍历当前类的所有属性;
  • 'PropertyEach' 是模板的名称,用于扩展发现的每个属性;
  • 'PropertySeparator'是模板的名称,用于扩展任意两个PropertyEach之间的调用。

PropertyEach模板的内容要复杂一些:

"«?Get(itemName)»: " + «?Get(itemName)».ToString()

这表示可以创建一些代码释放出来的迭代属性的代表性字符串。

每一次«?ForEach» StringProvider找到新的属性,它就会设置itemName为属性的名称。这给了我们手动访问的方法,还可以将它放到我们的代码中。

以下类中扩展ToStringPropertyMethod模板:

public class Example
{
public string PropertyName1 { get; set; }
public string PropertyName2 { get; set; }
public string PropertyName3 { get; set; }
}

会得到以下结果:

public class Example
{
public string PropertyName1 { get; set; }
public string PropertyName2 { get; set; }
public override string ToString()
{
return "PropertyName1: " + PropertyName1.ToString() + "PropertyName2: " + PropertyName2.ToString();
}

}

这段代码会在调用时输出每个类属性的名称和值,这样就可以快速生成ToString()了。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都控件

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP