C#| Linq |亚音速 - Class对象

问题描述:

下面我有这个类/对象:C#| Linq |亚音速 - Class对象

public class Person 
{ 
    public string FirstName; 
    public string MI; 
    public string LastName; 
} 

Person p=new Person(); 
     p.FirstName = "Jeff"; 
     p.MI = "A"; 
     p.LastName = "Price"; 

有没有建在LINQ或C#或亚音速的这个?:

string myString = "FirstName=\"Jeff\" p.MI=\"A\" p.LastName=\"Price\""; 
,这将创建一个输出

看来你需要ToString超载Person。此外,不要公开公众这样的字段。使用properties

public class Person 
    { 
     public string FirstName { get; set; } 
     public string MI { get; set; } 
     public string LastName { get; set; } 

     public override string ToString() 
     { 
      return "FirstName=\"" + FirstName + "\" p.MI=\"" + MI + "\" p.LastName=\"" + LastName + "\""; 
     } 
    } 

(编辑)

这是你的请求(但它需要的属性):

public static class ObjectPrettyPrint 
    { 
     public static string ToString(object obj) 
     { 
      Type type = obj.GetType(); 
      PropertyInfo[] props = type.GetProperties(); 
      StringBuilder sb = new StringBuilder(); 
      foreach (var prop in props) 
      { 
       sb.Append(prop.Name); 
       sb.Append("=\""); 
       sb.Append(prop.GetValue(obj, null)); 
       sb.Append("\" "); 
      } 

      return sb.ToString(); 
     } 
    } 

用法:

 Console.WriteLine(ObjectPrettyPrint.ToString(new Person { FirstName, = "A", MI = "B", LastName = "C" })); 
+0

不错@bruno,但仍在等待更多输入 – 2009-08-07 09:25:03

+0

查看最新的答案。 – 2009-08-07 09:47:25

+0

y,现在正在尝试... – 2009-08-07 09:58:12

那么,作为LINQ和C#,不是默认的。

但是,在Person类中,您可以重写ToString()事件来为您执行此操作。

public override string ToString() 
    { 
     return string.Format("p.Firstname={0} p.MI={1} p.LastName={2}", FirstName, MI, LastName); 
    } 

然后你只需调用它,如下所示:

string myString = p.ToString(); 

,这将给你你正在寻找的输出。

+0

我是一个懒惰的人,与上面的布鲁诺一样。我正在寻找一些反思 – 2009-08-07 09:29:38

+0

反思?为什么在这个世界上你会想要这样做,如果这一切只是一个简单的覆盖? – 2009-08-07 09:36:18

+0

我只是在这里推动极限,以及你和Brunos的想法是简单而直接的,这就是为什么我已经在等待一些更多的答案= = – 2009-08-07 09:40:48