Este é o comando genxs que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS
PROGRAMA:
NOME
genxs - Gerador de serializador Xml Mono
SINOPSE
genx arquivo de configuração [destinationFolder]
DESCRIÇÃO
genx é uma ferramenta para gerar gravadores e leitores de serialização XML personalizados para classes.
arquivo de configuração é um arquivo de configuração que especifica várias informações, como o
classe para a qual gerar o leitor e o escritor, o nome e o namespace das classes
para gerar e uma coleção de ganchos para aplicar. Usando ganchos, é possível
personalizar o comportamento do serializador sem a necessidade de modificar o arquivo gerado, para
você pode regenerá-lo com segurança se a classe de origem for modificada.
pasta de destino especifica a pasta onde os arquivos serão gerados.
NOTA: Esta ferramenta só funciona no tempo de execução Mono, uma vez que usa algumas classes internas não
disponível em outros tempos de execução.
CONFIGURAÇÃO ARQUIVO FORMATO
O arquivo de configuração é um documento xml baseado na seguinte gramática ("?" Significa
opcional, "*" 0 ou mais):
*
nome ?
nome ?
nome ?
nome ?
?
*
?
*
Um arquivo de configuração pode ter vários elementos de "serializador", cada um dos quais especifica o
classe para a qual gerar um serializador junto com várias opções de geração. o
a classe de origem é especificada nos seguintes atributos:
* classe : nome da classe (incluindo namespace).
* montagem : nome do assembly. Pode incluir o caminho completo.
As opções de geração são especificadas em elementos filho:
* leitor : nome da classe de leitores.
* sem leitor : se "verdadeiro", não gera classe de leitor.
* escritor : nome da classe do escritor.
* baseSerializer : nome da classe base do serializador xml. Este item é apenas 2.0.
* implementação : nome da classe de implementação do serializador. Este item é apenas 2.0.
* sem escritor : se "verdadeiro", não gera classe de escritor.
* namespace : namespace das classes de leitor e escritor.
* gerarAsInterno : se "verdadeiro", gera classes como internas.
* OutFileName : nome do arquivo gerado.
* leitor Ganchos : uma lista de ganchos para aplicar ao leitor.
* escritor Hooks : uma lista de ganchos para aplicar ao escritor.
ESPECIFICANDO HOOKS
Usando ganchos, você pode personalizar o comportamento de leitores e escritores. Uma especificação de gancho
segue esta gramática:
?
nome ?
nome *
nome ?
Código fonte ?
Código fonte ?
Código fonte ?
O atributo "type" especifica o contexto no qual o gancho é aplicado. Pode ser um de
o seguinte:
* atributos : o gancho é aplicado onde os atributos são serializados / desserializados.
* elementos : o gancho é aplicado onde os elementos são serializados / desserializados.
* Atributo desconhecido : o gancho é aplicado onde atributos desconhecidos são processados.
* elemento desconhecido : o gancho é aplicado onde elementos desconhecidos são processados.
* membro : gancho é aplicado onde um membro é serializado / desserializado.
* tipo : o gancho é aplicado para todo o tipo.
O elemento "select" especifica as classes e membros aos quais o gancho deve ser adicionado.
Ele pode conter os seguintes elementos:
* Digite o nome : a classe com esse nome será selecionada (deve incluir namespace)
* atributo tipo : todas as classes que têm esse atributo aplicado serão selecionadas
(especifique o nome completo da classe de atributo, incluindo o namespace). Vários nomes de atributos
pode ser especificado.
* typeMembro : nome do membro da classe para o qual o gancho deve ser adicionado.
O código-fonte do gancho pode ser especificado usando qualquer um dos seguintes elementos:
* substituir : o código-fonte fornecido substituirá toda a serialização / desserialização
operações no contexto do gancho.
* inserirAntes : o código-fonte será adicionado antes do contexto do gancho.
* inserirDepois : o código-fonte será adicionado após o contexto do gancho.
Ao escrever o código para um gancho, você pode usar algumas variáveis especiais que são definidas
durante o processo de geração de código. As variáveis são as seguintes:
* $ TYPE: nome da classe que está sendo gerada, sem namespace.
* $ FULLTYPE: nome completo da classe que está sendo gerada, incluindo namespace.
* $ OBJECT: o objeto sendo serializado ou desserializado. Ao usar um leitor de substituição
gancho do tipo "tipo", o código do gancho deve atribuir o objeto desserializado a este
variável.
* -I $ ELEMENT: nome do elemento do objeto que está sendo serializado / desserializado.
* $ NAMESPACE: namespace do elemento do objeto que está sendo serializado / desserializado.
* $ MEMBER: nome do membro que está sendo serializado / desserializado. Válido apenas no "membro"
contexto.
GANCHO EXEMPLOS
O exemplo a seguir adiciona uma chamada a um método Validate após a desserialização de qualquer
objeto:
System.Xml.Schema.XmlSchema.Validate $ TYPE ($ OBJECT);
Este exemplo especifica o código a ser usado para desserializar a classe XmlSchema:
System.Xml.Schema.XmlSchema
$ OBJECT = System.Xml.Schema.XmlSchema.Read (Leitor, nulo);
Esse especifica o código a ser usado para ler as instâncias de XmlSchema:
System.Xml.Schema.XmlSchema
$ OBJECT.Write (Escritor);
Com estes dois ganchos o serializador irá imprimir algumas informações ao serializar a classe
"Minha classe":
MyNamespace.MyClass
Console.WriteLine ("Serializing MyClass");
Console.WriteLine ("MyClass serialized");
MyNamespace.MyClass
Console.WriteLine ("Membro serializado $ MEMBER");
Este gancho grava um elemento adicional para todos os tipos que possuem o atributo personalizado
"MyAttribute":
MyNamespace.MyAttribute
Writer.WriteStartElement ("privateData");
Writer.WriteString ($ OBJECT.PrivateData);
Writer.WriteEndElement();
CONFIGURAÇÃO ARQUIVO EXEMPLO
Este é o arquivo de configuração usado para gerar o serializador para ServiceDescription:
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 (Leitor, nulo);
System.Web.Services.Configuration.XmlFormatExtensionPointAttribute
ServiceDescription.WriteExtensions (Writer, $ OBJECT);
System.Xml.Schema.XmlSchema
$ OBJECT.Write (Escritor);
AUTORES
Luís Sánchez Gual ([email protegido])
Use genxs online usando serviços onworks.net