有没有办法在Visual Studio 2010中生成ToString()
方法?
我真的不想手动添加!
[编辑]
我想要一个简单的模型字符串表示。在之前的集成开发环境中,使用简单的模板和字段选择,可以在用户界面中启用ToString生成。
目前提供了Equals和Hashcode的默认实现,其模式类似。我希望能找到类似于ToString的东西。
看起来默认情况下没有 - 感谢回复!
(*这是我的第一个 .net 项目)
有没有办法在Visual Studio 2010中生成ToString()
方法?
我真的不想手动添加!
[编辑]
我想要一个简单的模型字符串表示。在之前的集成开发环境中,使用简单的模板和字段选择,可以在用户界面中启用ToString生成。
目前提供了Equals和Hashcode的默认实现,其模式类似。我希望能找到类似于ToString的东西。
看起来默认情况下没有 - 感谢回复!
(*这是我的第一个 .net 项目)
通过生成“格式化成员”,Resharper支持此功能
https://www.jetbrains.com/resharper/webhelp/Code_Generation__Formatting_Members.html
Resharper -> Edit -> Generate Code -> Formatting Members
或者alt + insert -> Formatting Members
我确认这在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();
}
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非常接近,在Java中我使用Ecilpse来生成ToString方法,然后将其复制到VS中...
tostr
并按Ctrl+Enter,它将自动生成连接类的所有公共属性的ToString()
方法。如果您在调试时需要更好地表示对象,可以使用DebuggerDisplayAttribute
:
[DebuggerDisplay("Count = {count}")]
class MyHashtable
{
public int count = 4;
}
这比重写ToString
方法更快,但仍然无法让您选择字段,您必须手动输入它们。
Object
会为您提供一个(虽然不是很有用,因为它只返回对象类型的命名空间和名称)。ToString
方法输出为什么。由于重写的 ToString()
方法的逻辑取决于您自己的业务需求,我能想到的唯一方法是创建一个 插件,为您创建空的 ToString()
重写,并在其中调用 base.ToString()
,如果您不自定义其内容,则没有任何意义这样做。
Visual Studio 已经为您提供了很多帮助,至少在 C# 中,如果您开始输入 public overrides。