ນີ້ແມ່ນ genxs ຄໍາສັ່ງທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນສະຖານີເຮັດວຽກອອນໄລນ໌ຟຣີຫຼາຍອັນຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
genxs - Mono's Xml Serializer Generator
ສະຫຼຸບສັງລວມ
genxs configurationFile [destinationFolder]
ລາຍລະອຽດ
genxs ເປັນເຄື່ອງມືສໍາລັບການສ້າງ writers serialization XML custom ແລະຜູ້ອ່ານສໍາລັບຫ້ອງຮຽນ.
configurationFile ແມ່ນໄຟລ໌ການຕັ້ງຄ່າທີ່ລະບຸຂໍ້ມູນຫຼາຍຢ່າງເຊັ່ນ:
ຫ້ອງຮຽນເພື່ອສ້າງຜູ້ອ່ານແລະນັກຂຽນ, ຊື່ແລະ namespace ຂອງຊັ້ນຮຽນ
ເພື່ອສ້າງ, ແລະການລວບລວມຂອງ hooks ທີ່ຈະນໍາໃຊ້. ໂດຍການນໍາໃຊ້ hooks ມັນເປັນໄປໄດ້
ປັບແຕ່ງພຶດຕິກໍາຂອງ serializer ໂດຍບໍ່ຈໍາເປັນຕ້ອງດັດແປງໄຟລ໌ທີ່ສ້າງຂຶ້ນ, ດັ່ງນັ້ນ
ທ່ານສາມາດສ້າງມັນຄືນໃຫມ່ໄດ້ຢ່າງປອດໄພຖ້າຊັ້ນແຫຼ່ງຖືກດັດແກ້.
ໂຟເດີປາຍທາງ ລະບຸໂຟນເດີທີ່ໄຟລ໌ຈະຖືກສ້າງ.
ຫມາຍເຫດ: ເຄື່ອງມືນີ້ພຽງແຕ່ດໍາເນີນການໃນ Mono runtime, ເນື່ອງຈາກວ່າມັນໃຊ້ບາງຫ້ອງຮຽນພາຍໃນບໍ່ໄດ້
ມີຢູ່ໃນ runtime ອື່ນໆ.
CONFIGURATION ເອກະສານ ຮູບແບບ
ໄຟລ໌ການຕັ້ງຄ່າແມ່ນເອກະສານ xml ໂດຍອີງໃສ່ໄວຍະກອນຕໍ່ໄປນີ້ ("?"ຫມາຍຄວາມວ່າ
ທາງເລືອກ, "*" 0 ຫຼືຫຼາຍກວ່ານັ້ນ):
*
ຊື່ ?
ຊື່ ?
ຊື່ ?
ຊື່ ?
?
*
?
*
ໄຟລ໌ການຕັ້ງຄ່າສາມາດມີຫຼາຍອົງປະກອບ "serializer", ແຕ່ລະອັນທີ່ລະບຸ
ຫ້ອງຮຽນທີ່ຈະສ້າງ serializer ຮ່ວມກັບທາງເລືອກການຜະລິດຫຼາຍ. ໄດ້
ຊັ້ນແຫຼ່ງແມ່ນລະບຸໄວ້ໃນຄຸນລັກສະນະຕໍ່ໄປນີ້:
* ລະດັບ : ຊື່ຂອງຊັ້ນຮຽນ (ລວມທັງ namespace).
* ສະພາແຫ່ງ : ຊື່ປະກອບ. ມັນສາມາດປະກອບມີເສັ້ນທາງທີ່ສົມບູນ.
ທາງເລືອກການຜະລິດແມ່ນລະບຸໄວ້ໃນອົງປະກອບຂອງເດັກນ້ອຍ:
* ອ່ານ : ຊື່ຂອງຫ້ອງຮຽນຜູ້ອ່ານ.
* noReader : ຖ້າ "ຄວາມຈິງ", ມັນບໍ່ໄດ້ສ້າງຫ້ອງຮຽນຜູ້ອ່ານ.
* ນັກຂຽນ : ຊື່ຫ້ອງນັກຂຽນ.
* baseSerializer : ຊື່ຂອງຊັ້ນ serializer xml ພື້ນຖານ. ລາຍການນີ້ແມ່ນ 2.0 ເທົ່ານັ້ນ.
* ການປະຕິບັດ : ຊື່ຂອງຊັ້ນປະຕິບັດ serializer. ລາຍການນີ້ແມ່ນ 2.0 ເທົ່ານັ້ນ.
* noWriter : ຖ້າ "ຄວາມຈິງ", ມັນບໍ່ໄດ້ສ້າງຊັ້ນນັກຂຽນ.
* namespace : namespace ຂອງຫ້ອງຮຽນຜູ້ອ່ານແລະນັກຂຽນ.
* generateAsInternal : if "true", ມັນສ້າງຫ້ອງຮຽນເປັນພາຍໃນ.
* outFileName : ຊື່ຂອງໄຟລ໌ທີ່ສ້າງຂຶ້ນ.
* readerHooks : ບັນຊີລາຍຊື່ຂອງ hook ທີ່ຈະນໍາໃຊ້ກັບຜູ້ອ່ານ.
* writerHooks : ບັນຊີລາຍຊື່ຂອງ hook ທີ່ຈະນໍາໃຊ້ກັບ writer ໄດ້.
ລະບຸ ກອກ
ການນໍາໃຊ້ hooks ທ່ານສາມາດປັບແຕ່ງພຶດຕິກໍາຂອງຜູ້ອ່ານແລະນັກຂຽນ. ຂໍ້ມູນສະເພາະຂອງ hook
ປະຕິບັດຕາມໄວຍາກອນນີ້:
?
ຊື່ ?
ຊື່ *
ຊື່ ?
ລະຫັດແຫຼ່ງ ?
ລະຫັດແຫຼ່ງ ?
ລະຫັດແຫຼ່ງ ?
ຄຸນລັກສະນະ "ປະເພດ" ລະບຸບໍລິບົດທີ່ hook ຖືກນໍາໃຊ້. ມັນສາມາດເປັນຫນຶ່ງໃນ
ຕໍ່ໄປນີ້:
* attributes : hook ຖືກນຳໃຊ້ໃນບ່ອນທີ່ຄຸນສົມບັດຖືກ serialized/deserialized.
* ອົງປະກອບ : hook ຖືກນໍາໃຊ້ບ່ອນທີ່ອົງປະກອບແມ່ນ serialized / deserialized.
* unknownAttribute : hook ຖືກນຳໃຊ້ໃນບ່ອນທີ່ມີການປະມວນຜົນຄຸນສົມບັດທີ່ບໍ່ຮູ້ຈັກ.
* ອົງປະກອບທີ່ບໍ່ຮູ້ຈັກ : hook ຖືກນໍາໃຊ້ບ່ອນທີ່ອົງປະກອບທີ່ບໍ່ຮູ້ຈັກຖືກປະມວນຜົນ.
* ສະມາຊິກ : hook ຖືກນໍາໃຊ້ບ່ອນທີ່ສະມາຊິກໄດ້ຖືກ serialized / deserialized.
* ປະເພດ : hook ແມ່ນໃຊ້ສໍາລັບປະເພດທັງຫມົດ.
ອົງປະກອບ "ເລືອກ" ກໍານົດຊັ້ນຮຽນແລະສະມາຊິກທີ່ hook ຕ້ອງໄດ້ຮັບການເພີ່ມ.
ມັນສາມາດປະກອບດ້ວຍອົງປະກອບດັ່ງຕໍ່ໄປນີ້:
* ຊື່ປະເພດ : ຫ້ອງຮຽນທີ່ມີຊື່ນັ້ນຈະຖືກເລືອກ (ຕ້ອງປະກອບມີ namespace)
* typeAttribute : ຫ້ອງຮຽນທັງໝົດທີ່ມີຄຸນສົມບັດນັ້ນຈະຖືກເລືອກ
(ລະບຸຄຸນສົມບັດອັນເຕັມທີ່ຂອງຊັ້ນຮຽນ, ລວມທັງ namespace). ຊື່ຄຸນສົມບັດຫຼາຍອັນ
ສາມາດລະບຸໄດ້.
* ປະເພດສະມາຊິກ : ຊື່ຂອງສະມາຊິກຫ້ອງຮຽນທີ່ຕ້ອງເພີ່ມ hook.
ລະຫັດແຫຼ່ງ hook ສາມາດຖືກກໍານົດໂດຍໃຊ້ອົງປະກອບຕໍ່ໄປນີ້:
* ທົດແທນ : ລະຫັດແຫຼ່ງທີ່ໃຫ້ມາຈະປ່ຽນແທນ serialization/deserialization ທັງໝົດ
ການດໍາເນີນງານໃນບໍລິບົດ hook.
* ໃສ່ກ່ອນ : ລະຫັດແຫຼ່ງຈະຖືກເພີ່ມກ່ອນບໍລິບົດຂອງ hook.
* ໃສ່ຫຼັງ : ລະຫັດແຫຼ່ງຈະຖືກເພີ່ມຫຼັງຈາກບໍລິບົດຂອງ hook.
ເມື່ອຂຽນລະຫັດສໍາລັບ hook ທ່ານສາມາດນໍາໃຊ້ບາງຕົວແປພິເສດທີ່ຖືກກໍານົດ
ໃນລະຫວ່າງຂະບວນການສ້າງລະຫັດ. ຕົວແປມີດັ່ງນີ້:
* $TYPE: ຊື່ຂອງຊັ້ນຮຽນທີ່ຖືກສ້າງຂຶ້ນ, ໂດຍບໍ່ມີ namespace.
* $FULLTYPE: ຊື່ເຕັມຂອງຊັ້ນຮຽນທີ່ຖືກສ້າງຂຶ້ນ, ລວມທັງ namespace.
* $OBJECT: ວັດຖຸທີ່ຖືກ serialized ຫຼື deserialized. ເມື່ອໃຊ້ຕົວອ່ານແທນ
hook ຂອງປະເພດ "ປະເພດ", ລະຫັດ hook ຕ້ອງກໍາຫນົດວັດຖຸ deserialized ກັບນີ້
ຕົວແປ.
* -I $ELEMENT: ຊື່ຂອງອົງປະກອບຂອງວັດຖຸທີ່ຖືກ serialized/deserialized.
* $NAMESPACE: namespace ຂອງອົງປະກອບຂອງວັດຖຸທີ່ຖືກ serialized / deserialized.
* $MEMBER: ຊື່ຂອງສະມາຊິກທີ່ຖືກ serialized/deserialized. ໃຊ້ໄດ້ໃນ "ສະມາຊິກ" ເທົ່ານັ້ນ
ສະພາບການ.
ຂໍ ຕົວຢ່າງ
ຕົວຢ່າງຕໍ່ໄປນີ້ເພີ່ມການໂທຫາວິທີການ Validate ຫຼັງຈາກ deserialization ຂອງໃດໆ
ຈຸດປະສົງ:
System.Xml.Schema.XmlSchema.Validate$TYPE ($OBJECT);
ຕົວຢ່າງນີ້ລະບຸລະຫັດທີ່ຈະໃຊ້ເພື່ອ deserialize ຫ້ອງຮຽນ XmlSchema:
System.Xml.Schema.XmlSchema
$OBJECT = System.Xml.Schema.XmlSchema.Read (Reader, null);
ອັນນັ້ນລະບຸລະຫັດທີ່ຈະໃຊ້ເພື່ອອ່ານຕົວຢ່າງ XmlSchema:
System.Xml.Schema.XmlSchema
$OBJECT.Write (ນັກຂຽນ);
ດ້ວຍສອງ hook ນີ້ serializer ຈະພິມຂໍ້ມູນບາງຢ່າງໃນເວລາທີ່ serializing ຫ້ອງຮຽນ
"MyClass":
MyNamespace.MyClass
Console.WriteLine ("Serializing MyClass");
Console.WriteLine ("MyClass serialized");
MyNamespace.MyClass
Console.WriteLine ("ສະມາຊິກ Serialized $MEMBER");
hook ນີ້ຂຽນອົງປະກອບເພີ່ມເຕີມສໍາລັບທຸກປະເພດທີ່ມີຄຸນລັກສະນະທີ່ກໍາຫນົດເອງ
"MyAttribute":
MyNamespace.MyAttribute
Writer.WriteStartElement ("ຂໍ້ມູນສ່ວນຕົວ");
Writer.WriteString ($OBJECT.PrivateData);
Writer.WriteEndElement ();
CONFIGURATION ເອກະສານ EXAMPLE
ນີ້ແມ່ນໄຟລ໌ການຕັ້ງຄ່າທີ່ໃຊ້ເພື່ອສ້າງ serializer ສໍາລັບ 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 (Writer, $OBJECT);
System.Xml.Schema.XmlSchema
$OBJECT.Write (ນັກຂຽນ);
AUTHORS
Luis Sanchez Gual ([email protected])
ໃຊ້ genxs ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net