genxs – Online in der Cloud

Dies ist der Befehl genxs, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


genxs – Monos XML-Serializer-Generator

ZUSAMMENFASSUNG


genxs Konfigurationsdatei [Zielordner]

BESCHREIBUNG


genxs ist ein Tool zum Generieren benutzerdefinierter XML-Serialisierungsschreiber und -leser für Klassen.

Konfigurationsdatei ist eine Konfigurationsdatei, die verschiedene Informationen angibt, z
Klasse, für die der Reader und Writer generiert werden soll, der Name und der Namensraum der Klassen
zum Generieren und eine Sammlung von Hooks zum Anwenden. Durch die Verwendung von Haken ist dies möglich
Passen Sie das Verhalten des Serialisierers an, ohne die generierte Datei ändern zu müssen
Sie können es sicher neu generieren, wenn die Quellklasse geändert wird.

Zielordner Gibt den Ordner an, in dem die Dateien generiert werden.

Anmerkungen: Dieses Tool läuft nur in der Mono-Laufzeit, da es einige interne Klassen nicht verwendet
in anderen Laufzeiten verfügbar.

CONFIGURATION FILE FORMAT


Die Konfigurationsdatei ist ein XML-Dokument, das auf der folgenden Grammatik basiert („?“)
optional, „*“ 0 oder mehr):


*
Name ?
Name ?
Name ?
Name ?
?
*

?
*




Eine Konfigurationsdatei kann mehrere „Serializer“-Elemente enthalten, von denen jedes das angibt
Klasse, für die ein Serialisierer zusammen mit mehreren Generierungsoptionen generiert werden soll. Der
Die Quellklasse wird in den folgenden Attributen angegeben:

* Klasse : Name der Klasse (einschließlich Namespace).

* Versammlung : Assemblyname. Es kann den vollständigen Pfad enthalten.

Generierungsoptionen werden in untergeordneten Elementen angegeben:

* Leser : Name der Leserklasse.

* noReader : Wenn „true“, wird keine Leserklasse generiert.

* Schriftsteller : Name der Writer-Klasse.

* baseSerializer : Name der Basis-XML-Serialisierungsklasse. Dieser Artikel ist nur 2.0.

* Implementierung : Name der Serializer-Implementierungsklasse. Dieser Artikel ist nur 2.0.

* noWriter : Wenn „true“, wird keine Writer-Klasse generiert.

* Namensraum : Namespace der Reader- und Writer-Klassen.

* generateAsInternal : Wenn „true“, werden Klassen als intern generiert.

* outFileName : Name der generierten Datei.

* ReaderHooks : eine Liste von Hooks, die auf den Reader angewendet werden sollen.

* WriterHooks : eine Liste von Hooks, die auf den Autor angewendet werden sollen.

SPEZIFIKATION HAKEN


Mithilfe von Hooks können Sie das Verhalten von Lesern und Autoren anpassen. Eine Hook-Spezifikation
folgt dieser Grammatik:


?
Name ?
Name *
Name ?

Quellcode ?
Quellcode ?
Quellcode ?


Das Attribut „type“ gibt den Kontext an, in dem der Hook angewendet wird. Es kann eines davon sein
die folgende:

* Attribute : Hook wird angewendet, wenn Attribute serialisiert/deserialisiert werden.

* Elemente : Hook wird dort angewendet, wo Elemente serialisiert/deserialisiert werden.

* Unbekannte Eigenschaft : Hook wird angewendet, wenn unbekannte Attribute verarbeitet werden.

* unbekanntes Element : Hook wird angewendet, wenn unbekannte Elemente verarbeitet werden.

* Mitglied : Hook wird angewendet, wenn ein Mitglied serialisiert/deserialisiert wird.

* tippe : Hook wird für den gesamten Typ angewendet.

Das „select“-Element gibt die Klassen und Mitglieder an, zu denen der Hook hinzugefügt werden muss.
Es kann folgende Elemente enthalten:

* Modellname : Die Klasse mit diesem Namen wird ausgewählt (muss Namespace enthalten)

* typeAttribute : Alle Klassen, auf die dieses Attribut angewendet wurde, werden ausgewählt
(Geben Sie den vollständigen Namen der Attributklasse an, einschließlich Namespace). Mehrere Attributnamen
angegeben werden kann.

* typeMember : Name des Klassenmitglieds, für das der Hook hinzugefügt werden muss.

Der Hook-Quellcode kann mit einem der folgenden Elemente angegeben werden:

* ersetzen : Der bereitgestellte Quellcode ersetzt die gesamte Serialisierung/Deserialisierung
Operationen im Hook-Kontext.

* insertBefore : Der Quellcode wird vor dem Hook-Kontext hinzugefügt.

* einfügenNach : Der Quellcode wird nach dem Hook-Kontext hinzugefügt.

Beim Schreiben des Codes für einen Hook können Sie einige spezielle, definierte Variablen verwenden
während des Codegenerierungsprozesses. Die Variablen sind die folgenden:

* $TYPE: Name der zu generierenden Klasse, ohne Namensraum.

* $FULLTYPE: Vollständiger Name der zu generierenden Klasse, einschließlich Namespace.

* $OBJECT: das Objekt, das serialisiert oder deserialisiert wird. Bei Verwendung eines Ersatzlesers
Hook vom Typ „type“, der Hook-Code muss diesem das deserialisierte Objekt zuweisen
variabel.

* -I $ELEMENT: Name des Elements des Objekts, das serialisiert/deserialisiert wird.

* $NAMESPACE: Namespace des Elements des Objekts, das serialisiert/deserialisiert wird.

* $MITGLIED: Name des Mitglieds, das serialisiert/deserialisiert wird. Nur gültig im „Mitglied“
Kontext.

HOOK Beispiele:


Im folgenden Beispiel wird nach der Deserialisierung einer Validate-Methode ein Aufruf hinzugefügt
Objekt:



System.Xml.Schema.XmlSchema.Validate$TYPE ($OBJECT);



Dieses Beispiel gibt den Code an, der zum Deserialisieren der XmlSchema-Klasse verwendet werden soll:



System.Xml.Schema.XmlSchema


$OBJECT = System.Xml.Schema.XmlSchema.Read (Reader, null);



Dieser gibt den Code an, der zum Lesen von XmlSchema-Instanzen verwendet werden soll:



System.Xml.Schema.XmlSchema

$OBJECT.Write (Writer);


Mit diesen beiden Hooks gibt der Serialisierer beim Serialisieren der Klasse einige Informationen aus
"Meine Klasse":



MyNamespace.MyClass

Console.WriteLine („Serializing MyClass“);
Console.WriteLine („MyClass serialisiert“);



MyNamespace.MyClass


Console.WriteLine ("Serialisiertes Mitglied $MEMBER");



Dieser Hook schreibt ein zusätzliches Element für alle Typen, die das benutzerdefinierte Attribut haben
„MeinAttribut“:



MeinNamespace.MeinAttribut


Writer.WriteStartElement ("privateData");
Writer.WriteString ($OBJECT.PrivateData);
Writer.WriteEndElement ();



CONFIGURATION FILE BEISPIEL


Dies ist die Konfigurationsdatei, die zum Generieren des Serialisierers für ServiceDescription verwendet wird:



ServiceDescriptionReaderBase
ServiceDescriptionWriterBase
System.Web.Services.Description
ServiceDescriptionSerializerBase.cs



System.Web.Services.Configuration.XmlFormatExtensionPointAttribute

ServiceDescription.ReadExtension (Reader, $OBJECT);



System.Xml.Schema.XmlSchema

$OBJECT = System.Xml.Schema.XmlSchema.Read (Reader, null);





System.Web.Services.Configuration.XmlFormatExtensionPointAttribute

ServiceDescription.WriteExtensions (Writer, $OBJECT);



System.Xml.Schema.XmlSchema

$OBJECT.Write (Writer);





AUTOREN


Lluis Sánchez Gual (lluis@ximian.com)

Nutzen Sie genxs online über die Dienste von onworks.net



Neueste Linux- und Windows-Online-Programme