【问题标题】:c# object to string to display it in text formatc#对象到字符串以文本格式显示
【发布时间】:2012-01-31 09:13:01
【问题描述】:

我有下一个对象/列表“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"
  ...

【问题讨论】:

  • 你试过什么?这个问题是一个编程问题,还是仅仅是关于格式的问题?
  • 我想必须使用反射来查看 listaDatos 上的每个属性并制作一个字符串,但不确定最好的方法是什么,或者网络框架 4.0 上是否存在允许我以最好的方式做到这一点

标签: c# object render


【解决方案1】:

Consumo 类实现ToString() 方法,然后使用Consumo 类的ToString() 方法为Datos 类实现ToString() 方法。

【讨论】:

  • 听起来简单而有效,我确信如果我使用反射是矫枉过正:) 我会等待其他答案,但这似乎是目前最简单的方法。谢谢
【解决方案2】:

当字符串表示用于可视化和类似目的时,最好的方法是覆盖ToString 方法。从最嵌套的类型开始,然后再往上走。使用嵌套对象的ToString 实现外部对象的ToString。格式化对象集合的一种非常有用的方法是string.Join():它允许您在没有显式循环的情况下格式化集合。

【讨论】:

  • 感谢我使用 string.Join 作为列表,最容易使用 "string.Join("\r\n", ListaDatos);"比 "ListaDatos.Aggregate("", (current, listaDato) => current + (listaDato.ToString() + "\r\n"));"
【解决方案3】:

您必须重写“ToString”默认函数,例如:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多