2011-11-04 75 views
0

我想让用户能够打印客户端副本(如果他们愿意的话)。我想关闭其整个类对象转换成字符串,然后设置成一个丰富的文本框控件,在类似于以下格式:在ToString方法中的类变量之间插入空格C#

Name: blah blah 

Age: blah blah 

Email: blah blah 

Description: blah blah blah 
blah blah blah blah blah 

等等等等,有一个简单的方法来完成行距/特殊格式?

由于提前, 阿里

+0

谢谢大家:) – Ari

回答

1

您可以使用String.Format()提供您的自定义格式:

class YourClass 
{ 
    public override string ToString() 
    { 
     return String.Format(CultureInfo.CurrentCulture, 
          "Description: {0} {1}{2}{3}", 
          this.Name, 
          this.Age, 
          Environment.NewLine, 
          this.Email); 
    } 
} 

这将输出:

Description: Name 
Age Email 
1

我假设你有一个名为Person类可以覆盖ToString方法,让所有的道具通过反射并将其打印出来,因此添加新属性不会导致代码中的任何更改:

 public override string ToString() 
     { 
      var props = GetType().GetProperties(); 

      string result = ""; 
      foreach (var prop in props) 
      { 
       var val = prop.GetValue(this, null); 
       var strVal = val != null ? val.ToString() : string.Empty; 
       result += prop.Name + " : " + strVal + Environment.NewLine; 
      } 
      return result; 
     } 

    } 

你也可以序列化它并在客户端进行descerialize,将类标记为可序列化很容易。

1
public override string ToString() 
    { 
     return string.Join(Environment.NewLine, 
      GetType().GetProperties().Select( 
      item => item.Name + ": " + (item.GetValue(this, null) ?? string.Empty).ToString() 
      )); 
    }