Eigenschaften eines Objektes (LINQ) auslesen.

04/06/2008 - 17:38 von Alex Schmidt | Report spam
Hallo NG,

ich habe mit dem MSLinqToSQLGenerator eine Klasse von einer Tabelle
abgeleitet. Jetzt würde ich gerne aus einem von der Klasse abgeleiteten
Objekt, nach dem ich die Felder mit Daten gefüllt habe, eine Hashtable
machen oder ein Array. Ich möchte programmatisch durch das von der Klasse
erzeugte Objekt durchlaufen und alle Eigenschaften (Name und Wert) auslesen
ohne die Eigenschaften/Tabellenfelder zu benennen. Ist so etwas eigentlich
mgölich?


Vielen Dank im Vorraus
Alex
 

Lesen sie die antworten

#1 Philipp Brune
04/06/2008 - 22:14 | Warnen spam
Alex Schmidt schrieb:
Hallo NG,

ich habe mit dem MSLinqToSQLGenerator eine Klasse von einer Tabelle
abgeleitet. Jetzt würde ich gerne aus einem von der Klasse abgeleiteten
Objekt, nach dem ich die Felder mit Daten gefüllt habe, eine Hashtable
machen oder ein Array. Ich möchte programmatisch durch das von der Klasse
erzeugte Objekt durchlaufen und alle Eigenschaften (Name und Wert) auslesen
ohne die Eigenschaften/Tabellenfelder zu benennen. Ist so etwas eigentlich
mgölich?


Vielen Dank im Vorraus
Alex






Hallo Alex,

Der System.Reflection Namespace ist hier Dein Freund :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace NGProj001
{
public static class ObjectExtension
{
public static IDictionary<string, object> ToDictionary<T>(this
T obj)
{
Dictionary<string, object> d = new Dictionary<string,
object>();

foreach ( PropertyInfo propertyInfo in
typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance))
{
d.Add(propertyInfo.Name, propertyInfo.GetValue(obj,
null));
}

return d;
}
}

public class Person
{
public Person(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}

public string FirstName { get; set; }
public string LastName { get; set; }
}

class Program
{
static void Main(string[] args)
{
Person p = new Person("PFN", "PLN");

IDictionary<string, object> personAsDictionary =
p.ToDictionary();

foreach (KeyValuePair<string, object> nameAndValue in
personAsDictionary)
{
Console.WriteLine(string.Format("{0}={1}",
nameAndValue.Key, nameAndValue.Value));
}

Console.Read();
}
}
}

Schöne Grüße,
Philipp

Ähnliche fragen