2012-01-01 87 views
2

我的下一個對象/列表「ListaDatos」我喜歡把它作爲明確的字符串(可視化/郵寄此等)C#對象的字符串以文本格式顯示出來

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 2012-01-01 14:14:46

+0

我想必須使用反射才能查看listaDatos上的每個屬性並將其作爲一個字符串,但不知道最佳方法如何,或者如果網絡框架4.0中存在某些東西,它允許我以最佳方式創建這些內容 – FabianSilva 2012-01-01 14:18:23

回答

7

實現爲ConsumoToString()方法,然後實現使用的DatosToString()方法ToString()Consumo類的方法。

+0

聽起來很簡單和有效,我確信如果我使用反射是過度殺傷:)我會等待一些其他答案,但這似乎是目前最簡單的方法。謝謝 – FabianSilva 2012-01-01 14:20:40

1

當字符串表示法用於可視化和類似目的時,最好的方法是覆蓋ToString方法。從最嵌套的類型開始,然後走上層次結構。使用嵌套對象的ToString來實現外部對象的ToString。格式化對象集合的一個非常有用的方法是string.Join():它允許您在沒有顯式循環的情況下對集合進行格式化。

+0

謝謝指點我使用string.Join爲列表,最容易使用「string.Join(」\ r \ n「,ListaDatos);」比「ListaDatos.Aggregate(」「,(current,listaDato)=> current +(listaDato.ToString()+」\ r \ n「));」 – FabianSilva 2012-01-01 14:54:27