Ich habe das Forum durchsucht aber leider nichts passendes gefunden.
Ich sollte zur Laufzeit eine Klasse die eine Variable Anzahl an Properties enthält erzeugen, Bezeichnung und Typ der Properties erfahre ich erst zur Laufzeit.
Als Beispiel:
Ich erfahre zur Laufzeit daß ich eine Klasse brauche die ein Propertie "Name" enthalten soll welches vom Typ "String" ist.
Hoffe mir kann da jemand weiterhelfen
Als alternative könnte ich dir eine Klasse anbieten, die
public class Wert
{
private Dictionary<string, object> werte = new Dictionary<string, object>();
public object this[string name]
{
get
{
return werte[name];
}
set
{
werte[name] = value;
}
}
}
Klasse zu verwenden und mittels Reflection bei Bedarf die Typen abfragen und auswerten. Weiß ja nich was du vorhast
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
Da gibt es mehrere Wege:
Bei Variante 1 und 2 brauchst du einen Compiler, vorzugsweise den Microsoft.CSharp.CSharpCodeProvider.
Variante 3 verfolgst du am besten gar nicht, was kleines wie ein paar Methoden kann man damit mal machen, mehr wird aber höllisch schwierig (geht aber)
Es geht darum. Ich arbeite mit WPF und habe eine ListView.
Zur Laufzeit bekomme ich eine Liste von Spaltennamen anhand dennen ich meine Spalten erzeuge, auch das Binding läuft über diese Spalennamen.
Später bekomme ich eine Liste von Strings die jeweils einem Datensatz entsprechen und die ich gerne in diese ListView einfügen würde. Da aber das Binding über Properties läuft von dennen ich vorher nicht weiss wie sie heißen und wieviele es davon gibt, war mein ansatz diese Datenklassen dynamisch zu erzeugen mit Properties die vom Namen den Bindungen entsprechen.
Tut mir Leid, mit WPF hab ich meich (leider) noch nicht beschäftigt...
Hallo bibL,
für das, was du willst, scheint es mir ein OverKill zu sein, eine dynamische Klasse zu generieren. Verwende einfacher und besser eine DataTable.
herbivore
Hallo,
solltest du aber trotz allem zur Laufzeit eine Klasse erstellen wollen, gibt es verschiedene Builderklassen dafür, z.B.
AssemblyBuilder, Fieldbuilder, Methodbuilder usw.
alles soweit zu finden im Namespace Reflection und Reflection.Emit
Gruß
HD
Man lernt auch im Alter nie aus
Mit 37 Fachinformatiker
Mit 38 (im August) Programmierer
@HansDampf:
...mit denen aber schwer umzugehen ist, da ist CodeDOM noch einfacher zu verstehen...
Original von onlinegurke
@HansDampf:
...mit denen aber schwer umzugehen ist, da ist CodeDOM noch einfacher zu verstehen... Dynamische IL ist ja auch nichts, was ein Application Dev mal einfach so machen sollte.
CodeDOM ist dafür da Source Code zu erzeugen, siehe wsdl.exe oder xsd.exe.
Das ist abartig langsam wenn man es dazu missbraucht wiederholt on-the-fly IL zu erzeugen und benötigt temporäre Dateien.
In diesem Fall ist beides die sprichwörtliche Kanone für die Spatzenjagd. Ein generischer Container wie DataTable würde es genauso tun.