有没有办法使用Visual Studio 2010生成ToString()
?
我真的不想亲手做到这一点!
[编辑]
我正在寻找我的模型的简单字符串表示。在以前的IDE中*使用简单的模板和字段选择在UI中启用了ToString生成。
目前,Equals和Hashcode的默认实现以类似的模式提供。我希望ToString有类似的东西。
默认情况下似乎没有 - 感谢您的回复!
(*这是我的第一个.net项目)
答案 0 :(得分:20)
Resharper通过生成“格式化成员”
来支持此功能https://www.jetbrains.com/resharper/webhelp/Code_Generation__Formatting_Members.html
Resharper -> Edit -> Generate Code -> Formatting Members
或
alt + insert -> Formatting Members
我确认这可以在Resharper 8中找到。
答案 1 :(得分:6)
您可以使用StatePrinter project
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);
}
}
答案 2 :(得分:4)
VS 2010甚至没有自动生成ToString方法的主要痛苦,语法足够接近Java,我使用Ecilpse生成ToString然后将其粘贴到VS ...
答案 3 :(得分:4)
开箱即用的VS不存在,但如果你不想自己实现它,它会在ReSharper plugin上。该插件是商业广告,但我个人认为这是值得的。
使用ReSharper,它将是alt + ins - >压倒成员 - >当类名在光标上时为tostring。
答案 4 :(得分:4)
使用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();
}
答案 5 :(得分:3)
您可以为每个样板代码创建自己的自定义代码段,并从IntelliSence中访问它 这是一个很好的教程http://msdn.microsoft.com/en-us/library/ms165392.aspx
详细了解如何使用替换创建代码段。您可以创建非常通用的结构。
答案 6 :(得分:3)
也许你应该看看AutoCode 4.0。它是一个Visual Studio扩展,它将带来一些片段。
例如,你可以在你班级的某个地方编写tostr
并按 Ctrl + Enter ,它会自动生成ToString()
方法连接该类的所有公共属性。
答案 7 :(得分:0)
如果你不编写自己的ToString方法,Object
会为你提供一个(虽然不是很有用,因为它只返回对象类型的名称空间和名称)。
否则,你必须自己创建它,因为IDE不可能知道你想要输出什么作为对象的ToString
方法。
答案 8 :(得分:0)
如果您需要在调试时更好地表示对象,可以使用DebuggerDisplayAttribute
:
[DebuggerDisplay("Count = {count}")]
class MyHashtable
{
public int count = 4;
}
这可能比覆盖ToString
更快,但它仍然不允许您选择字段,您必须键入它们。
答案 9 :(得分:-3)
由于被覆盖的ToString()
方法的逻辑取决于您自己的业务需求,我唯一能想到的是加载项,它会创建空的ToString()
你在里面调用base.ToString()
的覆盖,如果你没有自定义它的内容,那么就没有任何意义。
如果您开始输入公共覆盖,Visual Studio已经帮助了很多,至少在C#中。
答案 10 :(得分:-3)
ToString()
是object
上的一种方法,因此您无需将其添加到所有类中,只需要覆盖和更改行为。