Ini ialah arahan genxs yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
genxs - Penjana Serializer Xml Mono
SINOPSIS
genxs configurationFile [destinationFolder]
DESCRIPTION
genxs ialah alat untuk menjana penulis dan pembaca bersiri XML tersuai untuk kelas.
configurationFile ialah fail konfigurasi yang menentukan beberapa maklumat, seperti
kelas untuk menjana pembaca dan penulis, nama dan ruang nama kelas
untuk menjana, dan koleksi cangkuk untuk digunakan. Dengan menggunakan cangkuk adalah mungkin untuk
sesuaikan tingkah laku penyeri bersiri tanpa perlu mengubah suai fail yang dijana, jadi
anda boleh menjana semula dengan selamat jika kelas sumber diubah suai.
folder destinasi menentukan folder tempat fail akan dijana.
PERHATIAN: Alat ini hanya berjalan dalam masa jalan Mono, kerana ia tidak menggunakan beberapa kelas dalaman
tersedia dalam runtime lain.
CONFIGURATION FAIL FORMAT
Fail konfigurasi ialah dokumen xml berdasarkan tatabahasa berikut ("?" bermakna
pilihan, "*" 0 atau lebih):
*
nama ?
nama ?
nama ?
nama ?
?
*
?
*
Fail konfigurasi boleh mempunyai berbilang elemen "serializer", yang setiap satunya menentukan
kelas untuk menjana serializer bersama beberapa pilihan generasi. The
kelas sumber ditentukan dalam atribut berikut:
* kelas : nama kelas (termasuk ruang nama).
* perhimpunan : nama perhimpunan. Ia boleh merangkumi laluan lengkap.
Pilihan penjanaan ditentukan dalam elemen kanak-kanak:
* pembaca : nama kelas pembaca.
* tiada Pembaca : jika "benar", ia tidak menjana kelas pembaca.
* penulis : nama kelas penulis.
* baseSerializer : nama kelas penyeri xml asas. Item ini adalah 2.0 sahaja.
* pelaksanaan : nama kelas pelaksanaan serializer. Item ini adalah 2.0 sahaja.
* noWriter : jika "benar", ia tidak menjana kelas penulis.
* ruang nama : ruang nama kelas pembaca dan penulis.
* generateAsInternal : jika "benar", ia menjana kelas sebagai dalaman.
* outFileName : nama fail yang dijana.
* readerHooks : senarai cangkuk untuk digunakan kepada pembaca.
* writerHooks : senarai cangkuk untuk digunakan kepada penulis.
MENYERTAI KEDAI
Menggunakan cangkuk anda boleh menyesuaikan tingkah laku pembaca dan penulis. Spesifikasi cangkuk
mengikuti tatabahasa ini:
?
nama ?
nama *
nama ?
kod sumber ?
kod sumber ?
kod sumber ?
Atribut "jenis" menentukan konteks di mana cangkuk digunakan. Ia boleh menjadi salah satu daripada
yang berikut:
* sifat-sifat : cangkuk digunakan apabila atribut disiri/diserialisasi.
* unsur-unsur : cangkuk digunakan apabila elemen disiri/diserialisasi.
* tidak diketahuiAtribut : cangkuk digunakan di mana atribut yang tidak diketahui diproses.
* unsur tidak diketahui : cangkuk digunakan di mana unsur yang tidak diketahui diproses.
* ahli : cangkuk digunakan di mana ahli disiri/diserialisasi.
* jenis : cangkuk digunakan untuk keseluruhan jenis.
Elemen "pilih" menentukan kelas dan ahli yang mana cangkuk perlu ditambah.
Ia boleh mengandungi unsur-unsur berikut:
* typeName : kelas dengan nama itu akan dipilih (mesti termasuk ruang nama)
* jenisAtribut : semua kelas yang mempunyai atribut itu digunakan akan dipilih
(nyatakan nama kelas atribut penuh, termasuk ruang nama). Beberapa nama atribut
boleh ditentukan.
* typeAhli : nama ahli kelas yang mana cangkuk mesti ditambah.
Kod sumber cangkuk boleh ditentukan menggunakan mana-mana elemen berikut:
* menggantikan : kod sumber yang disediakan akan menggantikan semua siri/deserialisasi
operasi dalam konteks cangkuk.
* masukkanSebelum : kod sumber akan ditambah sebelum konteks cangkuk.
* masukkanSelepas : kod sumber akan ditambah selepas konteks cangkuk.
Apabila menulis kod untuk cangkuk anda boleh menggunakan beberapa pembolehubah khas yang ditakrifkan
semasa proses penjanaan kod. Pembolehubah adalah seperti berikut:
* $TYPE: nama kelas yang dijana, tanpa ruang nama.
* $FULLTYPE: nama penuh kelas yang dijana, termasuk ruang nama.
* $OBJECT: objek yang disiri atau dinyahsiri. Apabila menggunakan pembaca ganti
cangkuk jenis "jenis", kod cangkuk mesti memperuntukkan objek yang dinyahsiri untuk ini
berubah-ubah.
* -I $ELEMENT: nama elemen objek yang disiri/diserialisasi.
* $NAMESPACE: ruang nama bagi elemen objek yang disiri/diserialisasi.
* $AHLI: nama ahli yang disiri/diserialisasikan. Hanya sah dalam "ahli"
konteks.
HOOK CONTOH
Contoh berikut menambah panggilan kepada kaedah Sahkan selepas penyahserikatan mana-mana
objek:
System.Xml.Schema.XmlSchema.Validate$TYPE ($OBJECT);
Contoh ini menentukan kod yang akan digunakan untuk menyahsiri kelas XmlSchema:
System.Xml.Schema.XmlSchema
$OBJECT = System.Xml.Schema.XmlSchema.Read (Reader, null);
Yang itu menentukan kod untuk digunakan untuk membaca contoh XmlSchema:
System.Xml.Schema.XmlSchema
$OBJECT.Write (Penulis);
Dengan dua cangkuk ini, serializer akan mencetak beberapa maklumat apabila bersiri kelas
"Kelas saya":
MyNamespace.MyClass
Console.WriteLine ("Serializing MyClass");
Console.WriteLine ("MyClass bersiri");
MyNamespace.MyClass
Console.WriteLine ("Ahli bersiri $AHLI");
Cangkuk ini menulis elemen tambahan untuk semua jenis yang mempunyai atribut tersuai
"Atribut Saya":
MyNamespace.MyAttribute
Writer.WriteStartElement ("Data persendirian");
Writer.WriteString ($OBJECT.PrivateData);
Writer.WriteEndElement ();
CONFIGURATION FAIL CONTOH
Ini ialah fail konfigurasi yang digunakan untuk menjana serializer untuk 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 (Reader, null);
System.Web.Services.Configuration.XmlFormatExtensionPointAttribute
ServiceDescription.WriteExtensions (Penulis, $OBJECT);
System.Xml.Schema.XmlSchema
$OBJECT.Write (Penulis);
PENGARANG
Lluis Sanchez Gual ([e-mel dilindungi])
Gunakan genxs dalam talian menggunakan perkhidmatan onworks.net