我正在创建一个表单,其字段需要通过电子邮件发送。这是一个内部项目,所以时间紧迫,电子邮件不需要漂亮。
是否有一种快速而又脏的方法将类序列化/格式化为类似于此的可读字符串:
Field1Name:
This is the value of field1
Field2Name:
value of field 2
我可以写一些反思来做到这一点没有太多问题,但我很好奇是否已经内置了.NET可以为我做的事情。就像我说的那样,我正在寻找快速的东西。
答案 0 :(得分:3)
如果您不想在输出中使用尖括号或花括号,最好的办法是为您的类编写ToString()
方法,并在要发送字符串表示时调用它。应该花大约五分钟。
public override string ToString()
{
return "Field1Name: \n" + field1.ToString() +
"\nField2Name: \n" + field2.ToString() +
"\nField3Name: \n" + field3.ToString() +
"\nNestedObject: \n" + nestedObject.ToString();
}
确保为嵌套对象覆盖ToString()
。 :)
答案 1 :(得分:3)
你可以使用这样的反射:
public static string ClassToString(Object o)
{
Type type = o.GetType();
StringBuilder sb = new StringBuilder();
foreach (FieldInfo field in type.GetFields())
{
sb.Append(field.Name).AppendLine(": ");
sb.AppendLine(field.GetValue(o).ToString());
}
foreach (PropertyInfo property in type.GetProperties())
{
sb.Append(property.Name).AppendLine(": ");
sb.AppendLine(property.GetValue(o, null).ToString());
}
return sb.ToString();
}