我创建的表单的字段需要通过电子邮件发送。这是一个内部项目,所以时间表很紧,电子邮件不需要很漂亮。将类转换为通过电子邮件发送的字符串
是否有一个快速和肮脏的方式序列化/格式化类到一个类似的可读的字符串:
Field1Name:
This is the value of field1
Field2Name:
value of field 2
我可以写了一些反思这样做没有太多的问题,但我很好奇如果有一些已经嵌入到.NET中的东西可能会为我做。就像我说的,我在寻找快速的东西。
我创建的表单的字段需要通过电子邮件发送。这是一个内部项目,所以时间表很紧,电子邮件不需要很漂亮。将类转换为通过电子邮件发送的字符串
是否有一个快速和肮脏的方式序列化/格式化类到一个类似的可读的字符串:
Field1Name:
This is the value of field1
Field2Name:
value of field 2
我可以写了一些反思这样做没有太多的问题,但我很好奇如果有一些已经嵌入到.NET中的东西可能会为我做。就像我说的,我在寻找快速的东西。
您可以使用反射像这样:
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();
}
如果您不想在输出中使用尖括号或花括号,最好的方法是为您的课程编写ToString()
方法,并在您想要发送字符串表示时调用它。应该带你五分钟左右。
public override string ToString()
{
return "Field1Name: \n" + field1.ToString() +
"\nField2Name: \n" + field2.ToString() +
"\nField3Name: \n" + field3.ToString() +
"\nNestedObject: \n" + nestedObject.ToString();
}
确保您替代嵌套对象的ToString()
。 :)
反思*为*快速(实施),以及内置。 – Jamiec 2013-03-20 15:49:01
您可以使用JSON序列化程序。对于非技术性的个人来说这看起来有点奇怪,但我想这会起作用。它具有自动处理嵌套对象和数组的优点。 – 2013-03-20 15:49:32
@Jamiec:如果你有嵌套的对象,它不会那么简单。当你要遍历的时候,以及当你打算调用ToString的时候,你需要有一些逻辑。 – 2013-03-20 15:50:27