Jest to polecenie genxs, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu Mac OS
PROGRAM:
IMIĘ
genxs — Generator serializatora Xml firmy Mono
STRESZCZENIE
genxs plik konfiguracyjny [folder docelowy]
OPIS
genxs to narzędzie do generowania niestandardowych pisarzy i czytników serializacji XML dla klas.
plik konfiguracyjny to plik konfiguracyjny, który określa kilka informacji, takich jak
klasa, dla której ma zostać wygenerowany czytnik i pisarz, nazwa i przestrzeń nazw klas
do wygenerowania i zbiór haczyków do zastosowania. Za pomocą haków można:
dostosować zachowanie serializatora bez konieczności modyfikowania wygenerowanego pliku, więc
możesz go bezpiecznie zregenerować, jeśli klasa źródłowa zostanie zmodyfikowana.
folder docelowy określa folder, w którym zostaną wygenerowane pliki.
UWAGA: To narzędzie działa tylko w środowisku uruchomieniowym Mono, ponieważ używa niektórych klas wewnętrznych, nie
dostępne w innych środowiskach wykonawczych.
KONFIGURACJA FILE FORMAT
Plik konfiguracyjny jest dokumentem XML opartym na następującej gramatyce ("?" oznacza
opcjonalnie, "*" 0 lub więcej):
*
Nazwa ?
Nazwa ?
Nazwa ?
Nazwa ?
?
*
?
*
Plik konfiguracyjny może zawierać wiele elementów „serializatora”, z których każdy określa
klasa, dla której ma zostać wygenerowany serializator wraz z kilkoma opcjami generowania. ten
klasa źródłowa jest określona w następujących atrybutach:
* klasa : nazwa klasy (w tym przestrzeń nazw).
* montaż : nazwa zespołu. Może zawierać pełną ścieżkę.
Opcje generacji są określone w elementach potomnych:
* czytelnik : nazwa klasy czytnika.
* nieCzytnik : jeśli "prawda", nie generuje klasy czytnika.
* pisarz : nazwa klasy pisarza.
* BaseSerializer : nazwa podstawowej klasy serializatora XML. Ta pozycja jest dostępna tylko w wersji 2.0.
* realizacja : nazwa klasy implementacji serializatora. Ta pozycja jest dostępna tylko w wersji 2.0.
* nieWriter : jeśli „prawda”, nie generuje klasy pisarza.
* przestrzeń nazw : przestrzeń nazw klas czytelnika i pisarza.
* generuj jako wewnętrzne : jeśli "prawda", generuje klasy jako wewnętrzne.
* OutFileName : nazwa wygenerowanego pliku.
* czytelnikHaki : lista zaczepów do zastosowania do czytnika.
* pisarzHaki : lista haczyków do zastosowania do pisarza.
OKREŚLANIE HACZYKI
Za pomocą hooków możesz dostosować zachowanie czytelników i pisarzy. Specyfikacja haka
postępuje zgodnie z tą gramatyką:
?
Nazwa ?
Nazwa *
Nazwa ?
kod źródłowy ?
kod źródłowy ?
kod źródłowy ?
Atrybut „type” określa kontekst, w którym zastosowano podpięcie. Może to być jeden z
następujące brzmienie:
* atrybuty : hook jest stosowany tam, gdzie atrybuty są serializowane/deserializowane.
* Elementy : hook jest stosowany tam, gdzie elementy są serializowane/deserializowane.
* nieznana cecha : hook jest stosowany w przypadku przetwarzania nieznanych atrybutów.
* nieznanyElement : hook jest stosowany tam, gdzie przetwarzane są nieznane elementy.
* członek : hook jest stosowany, gdy element członkowski jest serializowany/deserializowany.
* rodzaj : haczyk jest stosowany do całego typu.
Element „select” określa klasy i członków, do których należy dodać podpięcie.
Może zawierać następujące elementy:
* Wpisz imię : klasa o tej nazwie zostanie wybrana (musi zawierać przestrzeń nazw)
* typAtrybut : wszystkie klasy, które mają zastosowany ten atrybut, zostaną wybrane
(określ pełną nazwę klasy atrybutu, w tym przestrzeń nazw). Kilka nazw atrybutów
można określić.
* typCzłonek : nazwa członka klasy, dla którego należy dodać podpięcie.
Kod źródłowy haka można określić za pomocą dowolnego z następujących elementów:
* obsługi produkcji rolnej, która zastąpiła : dostarczony kod źródłowy zastąpi całą serializację/deserializację
operacje w kontekście haka.
* wstaw przed : kod źródłowy zostanie dodany przed kontekstem zaczepienia.
* wstaw po : kod źródłowy zostanie dodany po kontekście podpięcia.
Podczas pisania kodu dla hooka możesz użyć pewnych specjalnych zmiennych, które są zdefiniowane
podczas procesu generowania kodu. Zmienne są następujące:
* TYP $: nazwa generowanej klasy, bez przestrzeni nazw.
* $PEŁNY TYP: pełna nazwa generowanej klasy, w tym przestrzeń nazw.
* OBIEKT $: obiekt jest serializowany lub deserializowany. W przypadku korzystania z zastępczego czytnika
hak typu "type", kod haka musi przypisać do tego zdeserializowany obiekt
zmienna.
* -I $ELEMENT: nazwa elementu serializowanego/deserializowanego obiektu.
* $PRZESTRZEŃ NAZW: przestrzeń nazw elementu serializowanego/deserializowanego obiektu.
* $CZŁONEK: nazwa członka, który jest serializowany/deserializowany. Ważne tylko w „członku”
kontekst.
HOOK PRZYKŁADY
Poniższy przykład dodaje wywołanie metody Validate po deserializacji any
obiekt:
System.Xml.Schema.XmlSchema.Validate$TYPE ($OBJECT);
Ten przykład określa kod, który ma być użyty do deserializacji klasy XmlSchema:
System.Xml.Schema.XmlSchema
$OBJECT = System.Xml.Schema.XmlSchema.Read (Czytnik, null);
Ten określa kod, który ma być używany do odczytywania instancji XmlSchema:
System.Xml.Schema.XmlSchema
$OBJECT.Write (pisarz);
Dzięki tym dwóm zaczepom serializator wydrukuje pewne informacje podczas serializacji klasy
"Moja klasa":
MojaPrzestrzeńNazw.MojaKlasa
Console.WriteLine ("Serializacja MyClass");
Console.WriteLine ("Serializowany MyClass");
MojaPrzestrzeńNazw.MojaKlasa
Console.WriteLine ("Serializowany członek $ MEMBER");
Ten haczyk zapisuje dodatkowy element dla wszystkich typów, które mają atrybut niestandardowy
„Mój Atrybut”:
MyNamespace.MyAttribute
Writer.WriteStartElement ("privateData");
Writer.WriteString ($OBJECT.PrivateData);
Writer.WriteEndElement();
KONFIGURACJA FILE PRZYKŁAD
To jest plik konfiguracyjny używany do generowania serializatora dla ServiceDescription:
UsługaOpisBaza czytników
UsługaOpisWriterBase
System.Web.Usługi.Opis
Opis usługiSerializerBase.cs
System.Web.Services.Configuration.XmlFormatExtensionPointAttribute
ServiceDescription.ReadExtension (Czytnik, $OBJECT);
System.Xml.Schema.XmlSchema
$OBJECT = System.Xml.Schema.XmlSchema.Read (Czytnik, null);
System.Web.Services.Configuration.XmlFormatExtensionPointAttribute
ServiceDescription.WriteExtensions (zapisujący, $OBJECT);
System.Xml.Schema.XmlSchema
$OBJECT.Write (pisarz);
AUTORSKI
Lluis Sanchez Gual ([email chroniony])
Korzystaj z genxs online za pomocą usług onworks.net