2012-01-01 16 views
2

でそれを表示するための文字列にC#のオブジェクトは、私は次のオブジェクト/リスト「ListaDatos」を持っていると私はそれをのように明確な文字列を取得したい(メールなどを経由してこれを送る/視覚化する)テキスト形式

public List<Datos> ListaDatos = new List<Datos>(); 

public class Datos 
{ 
    public string Numero; 
    public string Alias; 
    public string URLConsumo; 

    //-- Consumos ----------------------------- 
    public List<Consumo> Consumos = new List<Consumo>(); 
    public string ConsumoTotal; 
} 

public class Consumo 
{ 
    public string Tipo; 
    public string Subtipo; 
    public string Concepto; 
    public string Cantidad; 
    public string Importe; 
    public string Total; 
} 

このようなもので文字列変数を取得するために、テキストにこのオブジェクトを「レンダリング」するための最も簡単な方法は何ですか:

DATOS 
Numero  : 10 
Alias  : "aaaaa" 
urlConsumo : "www.aaaaaaaaaaaaa" 
Consumos 
    Tipo  : "abc" 
    SubTtipo : "aaa" 
    ... 
DATOS 
Numero  : 10 
Alias  : "aaaaa" 
urlConsumo : "www.aaaaaaaaaaaaa" 
Consumos 
    Tipo  : "abc" 
    SubTtipo : "aaa" 
    ... 
+0

を参照してくださいあなたは何を試してみましたか?これはプログラミングの問題か、単にフォーマットについての質問ですか? – Oded

+0

私はlistaDatosの各プロパティを見るためにリフレクションを使わなければならないと思いますが、どのように最善の方法があるのか​​、ネットフレームワーク4.0に何かが存在していれば、これを最良の方法で作ることができます – FabianSilva

答えて

7

ConsumoクラスのToString()メソッドを実装してから使用してDatosクラスのToString()メソッドを実装クラスのメソッド。

+0

シンプルで効果的なように聞こえますが、もし私が使用されていたら、反射は残酷でした:)私はいくつかの他の答えを待つでしょうが、これは今のところ最も簡単な方法です。ありがとう – FabianSilva

1

視覚化などの目的で文字列表現を使用する場合、最も良い方法はToStringメソッドをオーバーライドすることです。一番ネストされたタイプから始め、階層を上ってください。外部オブジェクトのToStringを実装するには、ネストされたオブジェクトのToStringを使用します。オブジェクトのコレクションを書式設定する際の非常に便利な方法の1つはstring.Join()です。これにより、明示的なループを使わずにコレクションをフォーマットできます。

+0

リストのためにstring.Joinを使用して私にポイントしてくれてありがとう、 "string.Join(" \ r \ n "、ListaDatos);" "ListaDatos.Aggregate(" "、(current、listaDato)=>現在の+(listaDato.ToString()+" \ r \ n "));" – FabianSilva

2

あなたは次のように "ToStringメソッド" dafault機能をオーバーライドする必要があります。

public class Consumo 
{ 
    public string Tipo; 
    public string Subtipo; 
    public string Concepto; 
    public string Cantidad; 
    public string Importe; 
    public string Total; 

    public override string ToString() 
    { 
    return Tipo + " \n " + Subtipo + " \n "... etc; 
    } 
} 

が... C#の開発ガイドのエスケープシーケンスセクションに http://msdn.microsoft.com/en-us/library/h21280bw.aspx または http://msdn.microsoft.com/en-us/netframework/aa569608

関連する問題