Visual Studio 2010中是否有ToString()生成器?

有没有办法使用Visual Studio 2010生成ToString()

我真的不想手工做这个!

[编辑]

我正在寻找我的模型的简单字符串表示。 在之前的IDE中,使用简单的模板和字段选择在UI中启用了ToString生成。

目前,Equals和Hashcode的默认实现以类似的模式提供。 我希望ToString有类似的东西。

它似乎不是默认 – 感谢您的回复!

(*这是我的第一个.net项目)

您可以为每个样板代码创建自己的自定义代码段,并从IntelliSence访问它
这是一个很好的教程http://msdn.microsoft.com/en-us/library/ms165392.aspx

详细了解如何使用替换创建片段 。 您可以创建非常通用的结构。

Resharper通过生成“格式化成员”来支持此function

https://www.jetbrains.com/resharper/webhelp/Code_Generation__Formatting_Members.html

 Resharper -> Edit -> Generate Code -> Formatting Members 

要么

 alt + insert -> Formatting Members 

我确认这可以在Resharper 8中找到。

它在开箱即用的VS上不存在,但如果您不想自己实现它,它会在ReSharper插件上存在。 该插件是商业的,但我个人认为这是值得的。

使用ReSharper,它将是alt + ins – >覆盖成员 – > tostring,而类名在光标上。

您可以使用StatePrinter项目

 class AClassWithToString { string B = "hello"; int[] C = {5,4,3,2,1}; // Nice stuff ahead! static readonly StatePrinter printer = new StatePrinter(); public override string ToString() { return printer.PrintObject(this); } } 

VS 2010甚至没有自动生成ToString方法的主要痛苦,语法足够接近Java,我使用Ecilpse生成ToString然后将其粘贴到VS …

也许你应该看看AutoCode 4.0 。 它是一个Visual Studio扩展,它将带来一些片段。

例如,您可以在类中的某个位置简单地编写tostr并按Ctrl + Enter ,它将自动生成连接该类的所有公共属性的ToString()方法。

使用Reflection,您实际上可以编写ToString()方法的代码:

 public override String ToString() { Type objType = this.GetType(); PropertyInfo[] propertyInfoList = objType.GetProperties(); StringBuilder result = new StringBuilder(); foreach (PropertyInfo propertyInfo in propertyInfoList) result.AppendFormat("{0}={1} ", propertyInfo.Name, propertyInfo.GetValue(this)); return result.ToString(); } 

如果你不编写自己的ToString方法, Object为你提供一个(尽管不是很有用,因为它只返回对象类型的命名空间和名称)。

否则,您必须自己创建它,因为IDE不可能知道您想要输出什么作为对象的ToString方法。

如果在调试时需要更好地表示对象可以使用DebuggerDisplayAttribute

 [DebuggerDisplay("Count = {count}")] class MyHashtable { public int count = 4; } 

这可能比覆盖ToString更快,但它仍然不允许您选择字段,您必须键入它们。

ToString()是一个坐在object上的方法,因此只有在需要覆盖和更改行为时才需要将其添加到所有类中。

由于重写的ToString()方法的逻辑将取决于您自己的业务需求,我唯一可以想象的是一个加载项,它为您调用base.ToString()内部创建空的ToString()覆盖,如果您那么不要自定义它的内容,没有任何意义这样做。

如果您开始键入公共覆盖,Visual Studio已经为您提供了很多帮助,至少在C#中是这样。