将类转换为字符串以通过电子邮件发送

时间:2013-03-20 15:47:45

标签: c# .net asp.net-mvc serialization

我正在创建一个表单,其字段需要通过电子邮件发送。这是一个内部项目,所以时间紧迫,电子邮件不需要漂亮。

是否有一种快速而又脏的方法将类序列化/格式化为类似于此的可读字符串:

Field1Name:
This is the value of field1
Field2Name:
value of field 2

我可以写一些反思来做到这一点没有太多问题,但我很好奇是否已经内置了.NET可以为我做的事情。就像我说的那样,我正在寻找快速的东西。

2 个答案:

答案 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();
}