2009-08-07 11 views
1

Ich habe diese Klasse/Objekt unter:C# | Linq | SubSonic - Klasse Objekt

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"; 

Gibt es in Linq oder C# oder in Unterschall eingebaut, der einen Ausgang schaffen wird dies ?:

string myString = "FirstName=\"Jeff\" p.MI=\"A\" p.LastName=\"Price\""; 

Antwort

2

Es scheint, dass Sie eine ToString Überlastung in Person benötigen. Stellen Sie auch keine öffentlichen Felder wie diese. Verwenden Sie 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 + "\""; 
     } 
    } 

(edit)

hier Ihre Anfrage (aber es erfordert Eigenschaften):

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(); 
     } 
    } 

Verbrauch:

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

Schön ein @bruno, aber immer noch auf weitere Eingaben warten –

+0

Siehe die aktualisierte Antwort. –

+0

yup, jetzt versucht ... –

1

Nun, wie für LINQ und C#, nicht standardmäßig.

In der Person-Klasse können Sie jedoch das ToString() - Ereignis überschreiben, um es für Sie zu tun.

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

Und dann würden Sie es nur nennen wie folgt:

string myString = p.ToString(); 

, die Ihnen die Ausgabe von Ihnen gesuchte.

+0

Ich bin ein fauler Kerl, gleichen Code wie Bruno oben. Bin jetzt auf der Suche nach etwas Reflexion –

+0

Reflexion? Warum in der Welt würden Sie das tun wollen, wenn das alles eine einfache Überschreibung ist? –

+0

Ich stoße nur an die Grenze, naja deine und Brunos Idee sind einfach und geradlinig, deshalb wende ich sie schon an, während ich auf weitere Antworten warte =) –