Neue Klasse aus XML zur Laufzeit erstellen?
-
Hi,
ist es moeglich, aus einem XML/XSD/irgendwas-Dokument eine Klasse zur Laufzeit zu erstellen? Mit dem TypeBuilder oder einem anderen Modul?
Ich habe zwei Assemblies, A1 und A2. Beide sind voneinander unabhaengig. Nun will ich einen Typ/Klasse aus A1 A2 zugaenglich machen, ohne die Unabhaengigkeit der beiden Assemblies zu verlieren.
Ich dachte, ich erstelle aus dem Typ in A1 eine Art XML Schema oder irgendwas aehnliches und schicke diese Daten A2 zu, der anschliessend aus diesem Schema wieder einen Typen formt.
Gibt es einen Mechanismus fuer dieses Problem?
-
Wenn Du nicht gerade mit Reflection oder mit CodeDom (naja, dem Zeugs um on the fly Quellcode zu erstellen) rumfrickeln willst: Nein
Wenn A2 A1 kennen soll sind diese nicht mehr unabhängig voneinander also spricht auch IMHO nichts dagegen von A2 einen Verweis auf A1 zu legen.
-
Nun, ich hab bereits beides ausprobiert. Das Problem ist, der CSharpCodeProvider nimmt nur C# Code und compieliert den Typen in-memory. Ist ja alles toll, aber in A1 gibt es nun mal keine C# Code vom Typen den ich A2 zugaenglich machen will.
Reflection war ist so eine Sache... ich weiss nicht, ob ich da bereits alle Moeglichkeiten ausgeschoepft habe. Es kam mir etwas extrem vor, mit dem ILGenerator rumzupspielen und ominöse OpCodes zu benutzen.
Ich kann mir nicht vorstellen, dass es nicht folgende Loesung gibt: Mittels Reflection ein XML Schema von einer Klasse erzeugen um anschliessend, einen Typen daraus zu bauen und ihn wie ein gewoehnliches System.Object zu benutzen.