genxs - онлайн у хмарі

Це команда genxs, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

ПРОГРАМА:

ІМ'Я


genxs - генератор Xml-серіализатора Mono

СИНТАКСИС


genxs Конфігураційний файл [destinationFolder]

ОПИС


genxs є інструментом для створення користувацьких засобів запису і зчитування XML-серіалізації для класів.

файл конфігурації є конфігураційним файлом, який вказує декілька відомостей, наприклад
клас, для якого генеруються засоби читання та запису, імена та простір імен класів
генерувати та набір хуків для застосування. За допомогою гачків це можливо
налаштувати поведінку серіалізатора без необхідності змінювати згенерований файл
ви можете безпечно відновити його, якщо вихідний клас буде змінено.

тека призначення вказує папку, де будуть створені файли.

ПРИМІТКА: Цей інструмент працює лише в середовищі виконання Mono, оскільки він не використовує деякі внутрішні класи
доступні в інших середовищах виконання.

КОНФІГУРАЦІЯ Фото ФОРМАТ


Файл конфігурації є документом xml, заснованим на наступній граматиці (означає "?"
необов'язково, "*" 0 або більше):


*
ім'я ?
ім'я ?
ім'я ?
ім'я ?
?
*

?
*




Файл конфігурації може містити кілька елементів "серіализатора", кожен з яких визначає
клас, для якого генерується серіалізатор разом із кількома параметрами генерації. The
вихідний клас вказується в таких атрибутах:

* клас : назва класу (включаючи простір імен).

* збірка : назва збірки. Він може включати повний шлях.

Параметри генерації вказуються в дочірніх елементах:

* читач : назва класу читача.

* noReader : якщо "true", він не створює клас читача.

* письменник : назва класу письменника.

* базовий серіалізатор : назва базового класу серіалізатора xml. Цей пункт лише 2.0.

* реалізація : назва класу реалізації серіалізатора. Цей пункт лише 2.0.

* noWriter : якщо "true", це не генерує клас записувача.

* простору імен : простір імен класів reader і writer.

* generateAsInternal : якщо "true", він генерує класи як внутрішні.

* outFileName : назва створеного файлу.

* readerHooks : список гачків, які можна застосувати до читача.

* письменник Хукс : список гачків, які потрібно застосувати до письменника.

УКАЗАННЯ ГУКИ


За допомогою гачків ви можете налаштувати поведінку читачів і письменників. Специфікація гачка
дотримується цієї граматики:


?
ім'я ?
ім'я *
ім'я ?

вихідний код ?
вихідний код ?
вихідний код ?


Атрибут "type" визначає контекст, у якому застосовується хук. Це може бути один з
наступні:

* Атрибути : хук застосовується там, де атрибути серіалізовані/десеріалізовані.

* елементи : хук застосовується там, де елементи серіалізовані/десеріалізовані.

* невідомий атрибут : хук застосовується там, де обробляються невідомі атрибути.

* unknownElement : хук застосовується там, де обробляються невідомі елементи.

* член : хук застосовується там, де член серіалізований/десеріалізований.

* тип : гачок застосовується для всього типу.

Елемент "select" вказує класи та члени, до яких потрібно додати хук.
Він може містити такі елементи:

* typeName : буде вибрано клас з такою назвою (повинен включати простір імен)

* typeAttribute : будуть вибрані всі класи, до яких застосовано цей атрибут
(вкажіть повну назву класу атрибутів, включаючи простір імен). Кілька назв атрибутів
можна вказати.

* typeMember : ім'я члена класу, для якого потрібно додати хук.

Вихідний код хука можна вказати за допомогою будь-якого з наступних елементів:

* замінювати : наданий вихідний код замінить всю серіалізацію/десеріалізацію
операції в контексті хука.

* вставитиПеред : вихідний код буде додано перед контекстом хука.

* вставитиПісля : вихідний код буде додано після контексту хука.

При написанні коду для хука можна використовувати деякі спеціальні змінні, які визначені
під час процесу генерації коду. Змінні такі:

* $TYPE: ім'я класу, що створюється, без простору імен.

* $FULLTYPE: повна назва створюваного класу, включаючи простір імен.

* $ОБ'ЄКТ: об'єкт, який серіалізується або десеріалізується. При використанні замінного зчитувача
hook типу "type", код гачка повинен призначити цьому десеріалізований об'єкт
змінна.

* -I $ELEMENT: ім'я елемента об'єкта, який серіалізується/десеріалізується.

* $NAMESPACE: простір імен елемента об’єкта, що серіалізується/десеріалізується.

* $MEMBER: ім'я члена, який серіалізується/десеріалізується. Діє лише в "члені"
контексті.

ДАК ПРИКЛАДИ


Наступний приклад додає виклик методу Validate після десеріалізації будь-якого
об’єкт:



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



Цей приклад визначає код, який буде використовуватися для десеріалізації класу XmlSchema:



System.Xml.Schema.XmlSchema


$OBJECT = System.Xml.Schema.XmlSchema.Read (Reader, null);



Цей код визначає код, який буде використовуватися для читання екземплярів XmlSchema:



System.Xml.Schema.XmlSchema

$OBJECT.Write (Writer);


За допомогою цих двох гачків серіалізатор друкуватиме деяку інформацію під час серіалізації класу
"Мій клас":



MyNamespace.MyClass

Console.WriteLine ("Серіалізація MyClass");
Console.WriteLine ("MyClass serialized");



MyNamespace.MyClass


Console.WriteLine ("Серіалізований член $MEMBER");



Цей хук записує додатковий елемент для всіх типів, які мають спеціальний атрибут
"Мій атрибут":



MyNamespace.MyAttribute


Writer.WriteStartElement ("privateData");
Writer.WriteString ($OBJECT.PrivateData);
Writer.WriteEndElement ();



КОНФІГУРАЦІЯ Фото приклад


Це файл конфігурації, який використовується для створення серіалізатора для ServiceDescription:



ServiceDescriptionReaderBase
ServiceDescriptionWriterBase
Опис системи.Web.Services
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 (Writer);





AUTHORS


Луїс Санчес Гуаль (lluis@ximian.com)

Використовуйте genxs онлайн за допомогою служб onworks.net



Найновіші онлайн-програми для Linux і Windows