2009-04-20 13 views
0

ich habe eine xml wie dieseErstellen eines typefrom Xml

Ich möchte das XML analysieren, eine dynamische Klasse mit spscified Eigenschaften erstellen. Ich habe einige Hinweise gefunden, um es mit system.reflection.emit Namespace zu tun, aber ich muss immer eine Assembly und ein Modul erstellen, um den Typ zu definieren? Kann ich nur einen Typ erstellen und die Eigenschaften definieren?

<Root> 
<type> 
<name>mytype</name> 
<properties> 
    <property> 
    <name>property1</name> 
    <value>2</value> 
    <datatype>int</datatype> 
    </property> 
    <property> 
    <name>property3</name> 
    <value>2.5</value> 
    <datatype>double</datatype> 
    </property> 
    <property> 
    <name>property4</name> 
    <value>hello world</value> 
    <datatype>string</datatype> 
    </property> 
</properties> 
</type> 
</Root> 
+0

Aus Neugier, gibt es ein Framework ähnlich Java-Architektur für XML-Bindung (JAXB) in .NET? – AndreiM

Antwort

0

Ein Typ muss immer in einer Assembly vorhanden sein - Sie müssen die Assembly daher im Speicher erstellen. Sie könnten es leichter finden, das CodeDom-Modell zum Definieren der Typen zu verwenden.

+0

danke, das ist, was ich dachte .. –

+0

kann jemand ein Beispiel geben? –

0

This example zeigt Erstellen eines AssemblyBuilder dann ein ModuleBuilder dann der TypeBuilder. Von dort müssen Sie Eigenschaften definieren. Sie müssen Methoden erstellen, die & Parameter zurückgeben, die den get und set-Zugriffsmethoden entsprechen. Das Beispiel zeigt eine grundlegende Implementierung von Standard-Get/Set-Operationen, die ein Feld für den Speicher verwenden. Wenn du mehr brauchst, musst du lernen, CIL zu booten.

Wenn alle fertig sind rufen Sie TypeBuilder.CreateType und möglicherweise AssemblyBuilder.Save, wenn Sie es für die zukünftige Verwendung speichern möchten.

Wie für Ihre Besorgnis über das Erstellen einer Baugruppe. Es ist nicht so eine große Sache, eine dynamische Baugruppe zu definieren & Modul. Es sind nur ein paar Zeilen, um das zu tun.