Aceasta este comanda genxs care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS
PROGRAM:
NUME
genxs - Generatorul de serializator Xml al lui Mono
REZUMAT
genxs configurationFile [destinationFolder]
DESCRIERE
genxs este un instrument pentru generarea de scriitori și cititori de serializare XML personalizat pentru clase.
Fișier de configurare este fișierul de configurare care specifică mai multe informații, cum ar fi
clasa pentru care să genereze cititorul și scriitorul, numele și spațiul de nume ale claselor
pentru a genera și o colecție de cârlige de aplicat. Prin utilizarea cârligelor este posibil să
personalizați comportamentul serializatorului fără a fi nevoie să modificați fișierul generat, deci
îl puteți regenera în siguranță dacă clasa sursă este modificată.
dosar de destinație specifică folderul în care vor fi generate fișierele.
NOTĂ: Acest instrument rulează numai în timpul de execuție Mono, deoarece folosește unele clase interne, nu
disponibil în alte perioade de execuție.
CONFIGURARE FILE FORMAT
Fișierul de configurare este un document xml bazat pe următoarea gramatică ("?" înseamnă
opțional, „*” 0 sau mai mult):
*
Nume ?
Nume ?
Nume ?
Nume ?
?
*
?
*
Un fișier de configurare poate avea mai multe elemente „serializatoare”, fiecare dintre ele specificând
clasă pentru care să genereze un serializator împreună cu mai multe opțiuni de generare. The
clasa sursă este specificată în următoarele atribute:
* clasă : numele clasei (inclusiv namespace).
* asamblare : denumirea ansamblului. Poate include calea completă.
Opțiunile de generare sunt specificate în elementele copil:
* cititor : numele clasei de cititor.
* noReader : dacă „adevărat”, nu generează clasa de cititor.
* scriitor : numele clasei de scriitori.
* bazăSerializator : numele clasei de serializare xml de bază. Acest articol este doar 2.0.
* implementarea : numele clasei de implementare a serializatorului. Acest articol este doar 2.0.
* noWriter : dacă „adevărat”, nu generează clasa de scriitor.
* Spațiu de nume : spațiul de nume al claselor de cititor și scriitor.
* generateAsInternal : dacă „adevărat”, generează clase ca interne.
* outFileName : numele fișierului generat.
* readerHooks : o listă de cârlige de aplicat cititorului.
* writerHooks : o listă de cârlige de aplicat scriitorului.
SPECIFICAREA Cârlige
Folosind cârlige, puteți personaliza comportamentul cititorilor și scriitorilor. O specificație de cârlig
urmează această gramatică:
?
Nume ?
Nume *
Nume ?
cod sursa ?
cod sursa ?
cod sursa ?
Atributul „type” specifică contextul în care este aplicat cârligul. Poate fi unul dintre
următoarele:
* atribute : cârligul se aplică acolo unde atributele sunt serializate/deserializate.
* element : cârligul se aplică acolo unde elementele sunt serializate/deserializate.
* atribut necunoscut : cârligul este aplicat acolo unde sunt procesate atribute necunoscute.
* Element necunoscut : cârligul se aplică acolo unde sunt procesate elemente necunoscute.
* membru : cârligul se aplică acolo unde un membru este serializat/deserializat.
* tip : cârligul se aplică pentru întregul tip.
Elementul „select” specifică clasele și membrii la care trebuie adăugat cârligul.
Poate conține următoarele elemente:
* tipNume : va fi selectată clasa cu acel nume (trebuie să includă spațiu de nume)
* tipAtribut : vor fi selectate toate clasele care au acel atribut aplicat
(specificați numele complet al clasei de atribute, inclusiv spațiul de nume). Mai multe nume de atribute
poate fi specificat.
* tipMember : numele membrului clasei pentru care trebuie adăugat cârligul.
Codul sursă a cârligului poate fi specificat utilizând oricare dintre următoarele elemente:
* înlocui : codul sursă furnizat va înlocui toate serializările/deserializările
operațiuni în contextul cârligului.
* inserați Înainte : codul sursă va fi adăugat înainte de contextul hook.
* introduceDupă : codul sursă va fi adăugat după contextul hook.
Când scrieți codul pentru un cârlig puteți utiliza unele variabile speciale care sunt definite
în timpul procesului de generare a codului. Variabilele sunt următoarele:
* $TYPE: numele clasei care se generează, fără spațiu de nume.
* $FULLTYPE: numele complet al clasei care este generată, inclusiv spațiul de nume.
* $OBJECT: obiectul fiind serializat sau deserializat. Când utilizați un cititor de înlocuire
cârlig de tip „tip”, codul de cârlig trebuie să îi atribuie obiectului deserializat
variabilă.
* -I $ELEMENT: numele elementului obiectului care este serializat/deserializat.
* $NAMESPACE: spaţiul de nume al elementului obiectului care se serializează/dezerializat.
* $MEMBER: numele membrului care este serializat/deserializat. Valabil doar în „membru”
context.
HOOK EXEMPLE
Următorul exemplu adaugă un apel la o metodă Validate după deserializarea oricărei
obiect:
System.Xml.Schema.XmlSchema.Validate$TYPE ($OBJECT);
Acest exemplu specifică codul care trebuie utilizat pentru a deserializa clasa XmlSchema:
System.Xml.Schema.XmlSchema
$OBJECT = System.Xml.Schema.XmlSchema.Read (Cititor, nul);
Acesta specifică codul care trebuie utilizat pentru a citi instanțe XmlSchema:
System.Xml.Schema.XmlSchema
$OBJECT.Write (Scriitor);
Cu aceste două cârlige, serializatorul va imprima câteva informații atunci când serializează clasa
"Clasa mea":
MyNamspace.MyClass
Console.WriteLine („Serializarea MyClass”);
Console.WriteLine ("MyClass serializat");
MyNamspace.MyClass
Console.WriteLine ("Membru serializat $MEMBER");
Acest cârlig scrie un element suplimentar pentru toate tipurile care au atributul personalizat
„MyAttribute”:
MyNamspace.MyAttribute
Writer.WriteStartElement ("privateData");
Writer.WriteString ($OBJECT.PrivateData);
Writer.WriteEndElement ();
CONFIGURARE FILE EXEMPLU
Acesta este fișierul de configurare utilizat pentru a genera serializatorul pentru ServiceDescription:
ServiceDescriptionReaderBase
ServiceDescriptionWriterBase
Sistem.Servicii.Web.Descriere
ServiceDescriptionSerializerBase.cs
System.Web.Services.Configuration.XmlFormatExtensionPointAttribute
ServiceDescription.ReadExtension (Cititor, $OBJECT);
System.Xml.Schema.XmlSchema
$OBJECT = System.Xml.Schema.XmlSchema.Read (Cititor, nul);
System.Web.Services.Configuration.XmlFormatExtensionPointAttribute
ServiceDescription.WriteExtensions (Writer, $OBJECT);
System.Xml.Schema.XmlSchema
$OBJECT.Write (Scriitor);
AUTORI
Lluis Sanchez Gual ([e-mail protejat])
Utilizați genxs online folosind serviciile onworks.net