C# Visual Studio 2010中是否有可用的ToString()生成器?

C# Visual Studio 2010中是否有可用的ToString()生成器?,c#,visual-studio-2010,C#,Visual Studio 2010,是否有任何方法可以使用VisualStudio2010生成ToString 我真的不想手工做这件事 [编辑] 我正在寻找模型的简单字符串表示形式。在以前的IDE中,已经在UI中使用简单的模板和字段选择启用了*ToString生成 目前Equals和Hashcode的默认实现以类似的模式提供。我希望ToString也有类似的功能 这似乎不是默认的-感谢您的回复 *这是我的第一个.net项目,因为被重写的ToString方法的逻辑将取决于您自己的业务需要,我唯一能想到的是一个插件,它为您在内部调用b

是否有任何方法可以使用VisualStudio2010生成ToString

我真的不想手工做这件事

[编辑]

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

目前Equals和Hashcode的默认实现以类似的模式提供。我希望ToString也有类似的功能

这似乎不是默认的-感谢您的回复


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

,因为被重写的ToString方法的逻辑将取决于您自己的业务需要,我唯一能想到的是一个插件,它为您在内部调用base.ToString创建空的ToString重写,如果您不自定义它的内容,那么这样做没有任何意义


如果您开始键入public overrides,Visual Studio已经为您提供了很多帮助,至少在C语言中是这样。

ToString是一种位于对象上的方法,所以您不需要将它添加到所有类中,只有在您需要重写和更改行为的情况下。

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


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

您可以为每个样板代码创建自己的自定义代码段,并从IntelliSence访问它 这里有一个很好的教程


请仔细了解如何使用替换创建代码段。您可以创建非常通用的结构。

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


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

主要的痛苦是VS 2010甚至没有自动生成ToString方法,语法与Java非常接近,在Java中,我使用Ecilpse生成ToString,然后将其粘贴到VS中

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


使用ReSharper,当类名在光标上时,它将是alt+ins->overriding members->tostring。

也许您应该看看。它是一个VisualStudio扩展,将附带一些代码片段


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

Resharper通过生成格式化成员来支持这一点

我确认这在Resharper 8中可用。

您可以使用


使用反射,您实际上可以编写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();
}

它应该在什么基础上生成字符串表示?在ReSharper中有,我没有用户VS没有它,所以我真的不知道是否有;你是说超控吗?如果是这样的话,只需键入override,space并从列表中选择ToString-它将为您生成方法体。@lainie,我同意您的看法。我们都在寻找一些愚蠢的简单ToString生成器,比如Eclipse:。我不认为太多。NETers很熟悉这种功能。遗憾的是,VS2010没有IntelliJ IDEA智能,即使是最早的版本。也许,这是因为重写ToString在.NET中不如在Java中那么流行。您甚至不必编写public。如果您从override开始,并从下拉列表中选择ToString方法,则会自动添加public。。。像Eclipse那样打印出局部变量怎么样?我不认为这会超出你的想象。你似乎没有抓住要点。Lainie询问VS是否会自动生成Eclipse和NetBeans之类的方法。你不能总是依赖于调试器的存在,而能够将对象的状态转储到日志中是至关重要的。Eclipse和NetBeans提供了本地变量的转储,我想这正是她想要的。我来这里是为了寻找同样的答案。Visual Shitio与往常一样-落后了10年。alt+ins->格式化成员也在R7.1中生成了一个ToString。ReSharper是一个不可或缺的工具。但希望VS 2013有一个工具:-我认为这是一个很好的建议,并投了赞成票。然而,要小心那些试图从VB而不是C来实现这一点的人:我不知道为什么这个解决方案被接受。它充其量只能提供相关的信息。代码片段无法满足OP的要求。就在您认为ReSharper无法帮助您解决某些问题时……Uggg反射和应用程序性能。ToString方法应尽可能快地执行。
Resharper -> Edit -> Generate Code -> Formatting Members
alt + insert -> Formatting Members
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);
  }
}
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();
}