2009-08-07 37 views
1

下面我有這個類/對象: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\""; 
,這將創建一個輸出

回答

2

看來你需要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

1

那麼,作爲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