【发布时间】:2011-01-25 22:26:48
【问题描述】:
在 Java 世界中,我们有 Apache Commons 的 ToStringBuilder 来帮助创建 toString() 实现。
有人知道 C# 的一个不错的免费实现吗?还有我不知道的更好的选择吗?
如果不存在免费实现,我猜这个问题更像是一个“在 C# 3 中怎样才能成为一个好的 ToStringBuilder?”
在我的头顶:
它可以提供反射和手动创建 ToString 字符串。
如果它可以利用表达式树,那就太棒了。
像这样..
public override string ToString()
{
return new ToStringBuilder<Foo>(this)
.Append(t => t.Id)
.Append(t => t.Name)
.ToString();
}
哪个会返回:
"Foo{Id: 1, Name: AName}"
- 它可以使用 System.Reflection.Emit 来预编译 ToString 委托。
还有其他想法吗?
更新
只是为了澄清 ToStringBuilder 与 StringBuilder 不同。我正在寻找类似于 Apache Common 的 ToStringBuilder 功能的东西,它具有多行格式、不同样式和反射基础 ToString 创建等功能。谢谢。
更新 2
我已经建立了自己的。见here。
【问题讨论】:
-
也许你应该链接到 ToStringBuilder 所做的描述:commons.apache.org/lang/api/org/apache/commons/lang/builder/…
-
@Powerlord,谢谢我更新了链接,我想不是每个人都像我一样喜欢摸索源代码 ;-)
-
Fast C# 4 版本添加如下:stackoverflow.com/questions/2417647/…
标签: c# java reflection apache-commons tostring