Это команды genxs, которые можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
genxs - Генератор Xml-сериализатора Mono
СИНТАКСИС
Genxs конфигурационный файл [destinationFolder]
ОПИСАНИЕ
Genxs - это инструмент для создания настраиваемых средств записи и чтения XML-сериализации для классов.
конфигурационный файл это файл конфигурации, в котором указывается некоторая информация, например,
класс, для которого создаются читатель и писатель, имя и пространство имен классов
для создания и набор хуков для применения. С помощью крючков можно
настроить поведение сериализатора без необходимости изменять сгенерированный файл, поэтому
вы можете безопасно восстановить его, если исходный класс был изменен.
папка назначения указывает папку, в которой будут созданы файлы.
ПРИМЕЧАНИЕ: Этот инструмент работает только в среде выполнения Mono, поскольку он использует некоторые внутренние классы, а не
доступно в других средах выполнения.
КОНФИГУРАЦИЯ ФАЙЛОВ ФОРМАТ
Файл конфигурации представляет собой XML-документ, основанный на следующей грамматике («?» Означает
необязательно, "*" 0 или больше):
*
имя ?
имя ?
имя ?
имя ?
?
*
?
*
Файл конфигурации может иметь несколько элементов "сериализатора", каждый из которых определяет
класс, для которого создается сериализатор вместе с несколькими вариантами генерации. В
исходный класс указывается в следующих атрибутах:
* класс : имя класса (включая пространство имен).
* сборка : имя сборки. Он может включать полный путь.
Параметры генерации указываются в дочерних элементах:
* читатель : имя класса читателя.
* нетЧтение : если "истина", класс считывателя не создается.
* писатель : имя класса писателей.
* базовый сериализатор : имя базового класса сериализатора xml. Это только 2.0.
* реализация : имя класса реализации сериализатора. Это только 2.0.
* noWriter : если "истина", класс писателя не создается.
* Пространство имен : пространство имен классов чтения и записи.
* генерироватьAsInternal : если "истина", он создает классы как внутренние.
* outFileName : имя сгенерированного файла.
* читателькрючки : список ловушек для читателя.
* писатель : список ловушек, которые нужно применить к писателю.
УКАЗАНИЕ КРЮКИ
Используя хуки, вы можете настроить поведение читателей и писателей. Спецификация крючка
следует этой грамматике:
?
имя ?
имя *
имя ?
исходный код ?
исходный код ?
исходный код ?
Атрибут «type» определяет контекст, в котором применяется ловушка. Это может быть один из
следующие:
* Атрибуты : hook применяется там, где атрибуты сериализованы / десериализованы.
* элементы : hook применяется там, где элементы сериализованы / десериализованы.
* Неизвестный атрибут : hook применяется там, где обрабатываются неизвестные атрибуты.
* неизвестный элемент : hook применяется там, где обрабатываются неизвестные элементы.
* член : hook применяется, когда член сериализуется / десериализуется.
* напишите : крючок применяется ко всему типу.
Элемент «select» определяет классы и члены, к которым нужно добавить ловушку.
Он может содержать следующие элементы:
* имятипа : будет выбран класс с таким именем (должен включать пространство имен)
* типАтрибут : будут выбраны все классы, к которым применен этот атрибут
(укажите полное имя класса атрибута, включая пространство имен). Несколько имен атрибутов
можно указать.
* типчлен : имя члена класса, для которого нужно добавить ловушку.
Исходный код ловушки можно указать с помощью любого из следующих элементов:
* замещать : предоставленный исходный код заменит всю сериализацию / десериализацию
операции в контексте ловушки.
* InsertBefore : исходный код будет добавлен перед контекстом ловушки.
* вставить после : исходный код будет добавлен после контекста ловушки.
При написании кода для ловушки вы можете использовать некоторые специальные переменные, которые определены
в процессе генерации кода. Переменные следующие:
* $ ТИП: имя создаваемого класса без пространства имен.
* $ FULLTYPE: полное имя создаваемого класса, включая пространство имен.
* $ ОБЪЕКТ: сериализуемый или десериализуемый объект. При использовании заменяющего ридера
ловушка типа "type", код ловушки должен назначить десериализованный объект этому
Переменная.
* -I $ ELEMENT: имя элемента сериализуемого / десериализуемого объекта.
* $ NAMESPACE: пространство имен элемента сериализуемого / десериализуемого объекта.
* ЧЛЕН $: имя сериализуемого / десериализуемого члена. Действует только в "члене"
контекст.
ЗАКОРЮЧКИ ПРИМЕРЫ
В следующем примере добавляется вызов метода Validate после десериализации любого
объект:
System.Xml.Schema.XmlSchema.Validate $ TYPE ($ OBJECT);
В этом примере указывается код, который будет использоваться для десериализации класса XmlSchema:
System.Xml.Schema.XmlSchema
$ OBJECT = System.Xml.Schema.XmlSchema.Read (Читатель, ноль);
В нем указывается код, который будет использоваться для чтения экземпляров XmlSchema:
System.Xml.Schema.XmlSchema
$ OBJECT.Write (писатель);
С помощью этих двух перехватчиков сериализатор напечатает некоторую информацию при сериализации класса.
"Мои занятия":
MyNamespace.MyClass
Console.WriteLine ("Сериализация MyClass");
Console.WriteLine ("MyClass сериализован");
MyNamespace.MyClass
Console.WriteLine ("Сериализованный член $ MEMBER");
Этот хук записывает дополнительный элемент для всех типов, у которых есть настраиваемый атрибут
"MyAttribute":
MyNamespace.MyAttribute
Writer.WriteStartElement ("частные данные");
Writer.WriteString ($ OBJECT.PrivateData);
Писатель.ЗаписатьКонечныйЭлемент ();
КОНФИГУРАЦИЯ ФАЙЛОВ ПРИМЕР
Это файл конфигурации, используемый для создания сериализатора для ServiceDescription:
ServiceDescriptionReaderBase
ServiceDescriptionWriterBase
System.Web.Services.Description
ServiceDescriptionSerializerBase.cs
System.Web.Services.Configuration.XmlFormatExtensionPointAttribute
ServiceDescription.ReadExtension (Читатель, $ OBJECT);
System.Xml.Schema.XmlSchema
$ OBJECT = System.Xml.Schema.XmlSchema.Read (Читатель, ноль);
System.Web.Services.Configuration.XmlFormatExtensionPointAttribute
ServiceDescription.WriteExtensions (Writer, $ OBJECT);
System.Xml.Schema.XmlSchema
$ OBJECT.Write (писатель);
АВТОРЫ
Луис Санчес Гуаль ([электронная почта защищена])
Используйте genxs онлайн с помощью сервисов onworks.net