我想让用户能够打印客户端副本(如果他们愿意的话)。我想关闭其整个类对象转换成字符串,然后设置成一个丰富的文本框控件,在类似于以下格式:在ToString方法中的类变量之间插入空格C#
Name: blah blah
Age: blah blah
Email: blah blah
Description: blah blah blah
blah blah blah blah blah
等等等等,有一个简单的方法来完成行距/特殊格式?
由于提前, 阿里
我想让用户能够打印客户端副本(如果他们愿意的话)。我想关闭其整个类对象转换成字符串,然后设置成一个丰富的文本框控件,在类似于以下格式:在ToString方法中的类变量之间插入空格C#
Name: blah blah
Age: blah blah
Email: blah blah
Description: blah blah blah
blah blah blah blah blah
等等等等,有一个简单的方法来完成行距/特殊格式?
由于提前, 阿里
使用format strings,例如:
string.Format("{0}: {1}{2}", "Name", this.Name, Environment.NewLine);
使用Environment.NewLine
以获得正确的换行字符/秒。
非常感谢:) – Ari
您可以使用String.Format()提供您的自定义格式:
class YourClass
{
public override string ToString()
{
return String.Format(CultureInfo.CurrentCulture,
"Description: {0} {1}{2}{3}",
this.Name,
this.Age,
Environment.NewLine,
this.Email);
}
}
这将输出:
Description: Name
Age Email
我假设你有一个名为Person类可以覆盖ToString
方法,让所有的道具通过反射并将其打印出来,因此添加新属性不会导致代码中的任何更改:
public override string ToString()
{
var props = GetType().GetProperties();
string result = "";
foreach (var prop in props)
{
var val = prop.GetValue(this, null);
var strVal = val != null ? val.ToString() : string.Empty;
result += prop.Name + " : " + strVal + Environment.NewLine;
}
return result;
}
}
你也可以序列化它并在客户端进行descerialize,将类标记为可序列化很容易。
public override string ToString()
{
return string.Join(Environment.NewLine,
GetType().GetProperties().Select(
item => item.Name + ": " + (item.GetValue(this, null) ?? string.Empty).ToString()
));
}
谢谢大家:) – Ari