1

フィールドをメールで送信する必要があるフォームを作成しています。これは社内プロジェクトであるため、タイムラインはタイトで、メールはきれいである必要はありません。

クラスを次のような読み取り可能な文字列にシリアル化/フォーマットする簡単で汚い方法はありますか?

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

あまり問題なくそれを行うためにいくつかのリフレクションを書くことができましたが、私のためにそれを行う.NETに既に組み込まれているものがあるかどうか興味があります. 私が言ったように、私は何か速いものを探しています。

4

2 に答える 2

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 に答える
3

出力に山かっこや中かっこを入れたくない場合はToString()、クラスのメソッドを作成し、文字列表現を送信するときにそれを呼び出すことをお勧めします。約 5 分かかります。

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 に答える