genxs: en línea en la nube

Este es el comando genxs que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


genxs - Generador de serializador XML de Mono

SINOPSIS


generaciones archivo de configuración [carpeta de destino]

DESCRIPCIÓN


generaciones es una herramienta para generar escritores y lectores de serialización XML personalizados para clases.

archivo de configuración es un archivo de configuración que especifica varias informaciones, como el
clase para la que generar el lector y el escritor, el nombre y el espacio de nombres de las clases
para generar y una colección de ganchos para aplicar. Mediante el uso de ganchos es posible
personalizar el comportamiento del serializador sin necesidad de modificar el archivo generado, por lo que
puede regenerarlo de forma segura si se modifica la clase de origen.

carpeta de destino especifica la carpeta donde se generarán los archivos.

NOTA: Esta herramienta solo se ejecuta en el tiempo de ejecución Mono, ya que utiliza algunas clases internas que no
disponible en otros tiempos de ejecución.

CONFIGURACIÓN ARCHIVO FORMATO


El archivo de configuración es un documento xml basado en la siguiente gramática ("?" Significa
opcional, "*" 0 o más):


*
nombre ?
nombre ?
nombre ?
nombre ?
?
*

?
*




Un archivo de configuración puede tener varios elementos "serializadores", cada uno de los cuales especifica el
clase para la cual generar un serializador junto con varias opciones de generación. los
La clase de origen se especifica en los siguientes atributos:

* clase : nombre de la clase (incluido el espacio de nombres).

* asamblea : nombre del ensamblado. Puede incluir la ruta completa.

Las opciones de generación se especifican en elementos secundarios:

* lector : nombre de la clase lectora.

* sin lector : si es "verdadero", no genera una clase de lector.

* escritor : nombre de la clase de escritor.

* baseSerializador : nombre de la clase de serializador xml base. Este artículo es solo 2.0.

* implementación : nombre de la clase de implementación del serializador. Este artículo es solo 2.0.

* sin escritor : si es "verdadero", no genera una clase de escritor.

* espacio de nombres : espacio de nombres de las clases de lectores y escritores.

* generar como interno : si es "verdadero", genera clases como internas.

* salidaNombreArchivo : nombre del archivo generado.

* lector de ganchos : una lista de ganchos para aplicar al lector.

* escritorHooks : una lista de ganchos para aplicar al escritor.

ESPECIFICANDO MANOS


Usando ganchos puede personalizar el comportamiento de lectores y escritores. Una especificación de gancho
sigue esta gramática:


?
nombre ?
nombre *
nombre ?

código fuente ?
código fuente ?
código fuente ?


El atributo "tipo" especifica el contexto en el que se aplica el gancho. Puede ser uno de
el seguimiento:

* atributos : el gancho se aplica donde los atributos se serializan / deserializan.

* elementos : el gancho se aplica donde los elementos se serializan / deserializan.

* Atributo desconocido : el gancho se aplica cuando se procesan atributos desconocidos.

* elemento desconocido : se aplica el gancho donde se procesan elementos desconocidos.

* miembro : el gancho se aplica cuando un miembro se serializa / deserializa.

* tipo : se aplica gancho para todo el tipo.

El elemento "select" especifica las clases y miembros a los que se debe agregar el gancho.
Puede contener los siguientes elementos:

* escribe un nombre : se seleccionará la clase con ese nombre (debe incluir espacio de nombres)

* tipoAtributo : se seleccionarán todas las clases que tengan ese atributo aplicado
(especifique el nombre completo de la clase de atributo, incluido el espacio de nombres). Varios nombres de atributos
se puede especificar.

* tipoMiembro : nombre del miembro de la clase para el que se debe agregar el gancho.

El código fuente del gancho se puede especificar mediante cualquiera de los siguientes elementos:

* reemplazar : el código fuente proporcionado reemplazará todas las serializaciones / deserializaciones
operaciones en el contexto del gancho.

* insertarAntes : el código fuente se agregará antes del contexto del gancho.

* insertar después : el código fuente se agregará después del contexto del gancho.

Al escribir el código para un gancho, puede usar algunas variables especiales que están definidas
durante el proceso de generación de código. Las variables son las siguientes:

* $ TIPO: nombre de la clase que se genera, sin espacio de nombres.

* $ FULLTYPE: nombre completo de la clase que se está generando, incluido el espacio de nombres.

* $ OBJETO: el objeto que se serializa o deserializa. Cuando se usa un lector de reemplazo
gancho de tipo "tipo", el código de gancho debe asignar el objeto deserializado a este
variable.

* -I $ ELEMENT: nombre del elemento del objeto que se serializa / deserializa.

* $ NAMESPACE: espacio de nombres del elemento del objeto que se serializa / deserializa.

* $ MIEMBRO: nombre del miembro que se serializa / deserializa. Solo válido en el "miembro"
contexto.

GANCHO EJEMPLOS


El siguiente ejemplo agrega una llamada a un método Validate después de la deserialización de cualquier
:



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



Este ejemplo especifica el código que se utilizará para deserializar la clase XmlSchema:



System.Xml.Schema.XmlSchema


$ OBJECT = System.Xml.Schema.XmlSchema.Read (Lector, nulo);



Ese especifica el código que se utilizará para leer instancias de XmlSchema:



System.Xml.Schema.XmlSchema

$ OBJECT.Write (Escritor);


Con estos dos ganchos el serializador imprimirá alguna información al serializar la clase
"Mi clase":



MyNamespace.MyClass

Console.WriteLine ("Serializar MyClass");
Console.WriteLine ("MyClass serializado");



MyNamespace.MyClass


Console.WriteLine ("Miembro serializado $ MEMBER");



Este gancho escribe un elemento adicional para todos los tipos que tienen el atributo personalizado
"Mi atributo":



MyNamespace.MyAttribute


Writer.WriteStartElement ("datos privados");
Writer.WriteString ($ OBJECT.PrivateData);
Escritor.WriteEndElement ();



CONFIGURACIÓN ARCHIVO EJEMPLO


Este es el archivo de configuración utilizado para generar el serializador para ServiceDescription:



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



System.Web.Services.Configuration.XmlFormatExtensionPointAttribute

ServiceDescription.ReadExtension (Lector, $ OBJECT);



System.Xml.Schema.XmlSchema

$ OBJECT = System.Xml.Schema.XmlSchema.Read (Lector, nulo);





System.Web.Services.Configuration.XmlFormatExtensionPointAttribute

ServiceDescription.WriteExtensions (Writer, $ OBJECT);



System.Xml.Schema.XmlSchema

$ OBJECT.Write (Escritor);





AUTORES


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

Use genxs en línea usando los servicios de onworks.net



Últimos programas en línea de Linux y Windows