Questo è il comando genxs che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
genxs - Generatore serializzatore Xml di Mono
SINOSSI
Genxs file di configurazione [cartella di destinazione]
DESCRIZIONE
Genxs è uno strumento per generare writer e lettori di serializzazione XML personalizzati per le classi.
file di configurazione è un file di configurazione che specifica diverse informazioni, come il
classe per cui generare il lettore e scrittore, il nome e lo spazio dei nomi delle classi
generare e una raccolta di ganci da applicare. Utilizzando i ganci è possibile
personalizzare il comportamento del serializzatore senza dover modificare il file generato, quindi
puoi tranquillamente rigenerarlo se la classe sorgente viene modificata.
la cartella di destinazione specifica la cartella in cui verranno generati i file.
NOTA: Questo strumento viene eseguito solo nel runtime Mono, poiché non utilizza alcune classi interne
disponibile in altri runtime.
CONFIGURAZIONE RISORSE FORMATO
Il file di configurazione è un documento xml basato sulla seguente grammatica ("?" significa
facoltativo, "*" 0 o più):
*
nome ?
nome ?
nome ?
nome ?
?
*
?
*
Un file di configurazione può avere più elementi "serializzatore", ognuno dei quali specifica il
classe per cui generare un serializzatore insieme a diverse opzioni di generazione. Il
la classe di origine è specificata nei seguenti attributi:
* classe : nome della classe (incluso lo spazio dei nomi).
* montaggio : nome dell'assieme. Può includere il percorso completo.
Le opzioni di generazione sono specificate negli elementi figlio:
* lettore : nome della classe di lettura.
* nessun lettore : se "true", non genera la classe del lettore.
* scrittore : nome della classe scrittore.
* baseSerializer : nome della classe serializzatore XML di base. Questo articolo è solo 2.0.
* implementazione : nome della classe di implementazione del serializzatore. Questo articolo è solo 2.0.
* nessuno Scrittore : se "true", non genera la classe writer.
* namespace : spazio dei nomi delle classi reader e writer.
* generareAsInternal : se "true", genera classi come interne.
* outFileName : nome del file generato.
* lettoreGanci : un elenco di agganci da applicare al lettore.
* scrittoreHooks : un elenco di hook da applicare allo scrittore.
SPECIFICANDO GANCI
Usando gli hook puoi personalizzare il comportamento di lettori e scrittori. Una specifica del gancio
segue questa grammatica:
?
nome ?
nome *
nome ?
codice sorgente ?
codice sorgente ?
codice sorgente ?
L'attributo "type" specifica il contesto in cui viene applicato l'hook. Può essere uno di
il seguente:
* gli attributi : hook viene applicato dove gli attributi sono serializzati/deserializzato.
* elementi : hook viene applicato dove gli elementi sono serializzati/deserializzato.
* sconosciutoAttributo : l'hook viene applicato dove vengono elaborati gli attributi sconosciuti.
* elemento sconosciuto : hook viene applicato dove vengono elaborati elementi sconosciuti.
* membro : hook viene applicato quando un membro è serializzato/deserializzato.
* Digitare : il gancio viene applicato per tutta la tipologia.
L'elemento "select" specifica le classi ei membri a cui deve essere aggiunto l'hook.
Può contenere i seguenti elementi:
* tipoNome : verrà selezionata la classe con quel nome (deve includere lo spazio dei nomi)
* typeAttribute : verranno selezionate tutte le classi a cui è applicato quell'attributo
(specificare il nome completo della classe dell'attributo, compreso lo spazio dei nomi). Diversi nomi di attributi
può essere specificato.
* tipoMembro : nome del membro della classe per il quale deve essere aggiunto l'hook.
Il codice sorgente dell'hook può essere specificato utilizzando uno dei seguenti elementi:
* sostituire : il codice sorgente fornito sostituirà tutta la serializzazione/deserializzazione
operazioni nel contesto hook.
* inserirePrima : il codice sorgente verrà aggiunto prima del contesto hook.
* inserireDopo : il codice sorgente verrà aggiunto dopo il contesto hook.
Quando scrivi il codice per un hook puoi usare alcune variabili speciali che sono definite
durante il processo di generazione del codice. Le variabili sono le seguenti:
* $TIPO: nome della classe generata, senza namespace.
* $TIPO COMPLETO: nome completo della classe generata, compreso lo spazio dei nomi.
* $OGGETTO: l'oggetto che viene serializzato o deserializzato. Quando si utilizza un lettore sostitutivo
hook di tipo "tipo", il codice hook deve assegnare l'oggetto deserializzato a questo
variabile.
* -I $ELEMENT: nome dell'elemento dell'oggetto che si sta serializzando/deserializzato.
* $ SPAZIO DEI NOME: spazio dei nomi dell'elemento dell'oggetto che viene serializzato/deserializzato.
* $MEMBRO: nome del membro serializzato/deserializzato. Valido solo nel "membro"
contesto.
HOOK ESEMPI
L'esempio seguente aggiunge una chiamata a un metodo Validate dopo la deserializzazione di any
oggetto:
System.Xml.Schema.XmlSchema.Validate$TYPE ($OBJECT);
Questo esempio specifica il codice da utilizzare per deserializzare la classe XmlSchema:
System.Xml.Schema.XmlSchema
$ OGGETTO = System.Xml.Schema.XmlSchema.Read (lettore, null);
Quello specifica il codice da utilizzare per leggere le istanze XmlSchema:
System.Xml.Schema.XmlSchema
$OBJECT.Write (scrittore);
Con questi due hook il serializzatore stamperà alcune informazioni durante la serializzazione della classe
"La mia classe":
MyNamespace.MyClass
Console.WriteLine ("Serializzazione di MyClass");
Console.WriteLine ("MyClass serializzato");
MyNamespace.MyClass
Console.WriteLine ("Membro serializzato $MEMBER");
Questo hook scrive un elemento aggiuntivo per tutti i tipi che hanno l'attributo personalizzato
"Il mio attributo":
MyNamespace.MyAttribute
Writer.WriteStartElement ("privateData");
Writer.WriteString ($OBJECT.PrivateData);
Writer.WriteEndElement ();
CONFIGURAZIONE RISORSE ESEMPIO
Questo è il file di configurazione utilizzato per generare il serializzatore per ServiceDescription:
ServiceDescriptionReaderBase
ServiceDescriptionWriterBase
Descrizione.Servizi.Web.Sistema
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 (scrittore);
AUTORI
Luis Sanchez Gual ([email protected])
Usa genxs online utilizzando i servizi onworks.net