In the Java world we have Apache Commons' ToStringBuilder to help with creating toString() implementations. ( http://commons.apache.org/lang/api/org/apache/commons/lang/builder/ToStringBuilder.html )
Does anyone know of a decent free implementation for C#? Are there better alternatives I don't know about?
If no free implementation exists than I guess this question becomes more of a question of "What would make a good ToStringBuilder in C# 3?"
Off the top of my head:
It could offer both reflection and manual ToString string creation.
It would be really cool if it could make use of Expression trees.
Something like this..
public override string ToString()
{
return new ToStringBuilder<Foo>(this)
.Append(t => t.Id)
.Append(t => t.Name)
.ToString();
}
Which would return:
"Foo{Id: 1, Name: AName}"
- It could use System.Reflection.Emit to precompile a ToString delegate.
Any other ideas?
UPDATE
Just to clarify ToStringBuilder is a different creature to StringBuilder.. I'm looking for something akin to the functionality of Apache Common's ToStringBuilder, it has features such as multi-line formatting, different styles and reflection base ToString creation. Thanks.