1

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

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

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

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

4

2 回答 2

3

如果您不想在输出中出现尖括号或花括号,最好的办法是ToString()为您的类编写一个方法,并在您想要发送字符串表示时调用它。大约需要五分钟。

public override string ToString()
{
    return "Field1Name: \n" + field1.ToString() +
           "\nField2Name: \n" + field2.ToString() +
           "\nField3Name: \n" + field3.ToString() + 
           "\nNestedObject: \n" + nestedObject.ToString();
}

确保覆盖ToString()嵌套对象。:)

于 2013-03-20T15:48:58.213 回答
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();
}
于 2013-03-20T15:56:04.947 回答