این دستور genxs است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
genxs - Mono's Xml Serializer Generator
خلاصه
جنس ها configurationFile [destinationFolder]
شرح
جنس ها ابزاری برای تولید نویسندگان و خواننده های سریال سازی XML سفارشی برای کلاس ها است.
فایل پیکربندی فایل پیکربندی است که چندین اطلاعات را مشخص می کند، مانند
کلاسی که برای آن خواننده و نویسنده، نام و فضای نام کلاس ها تولید شود
برای تولید، و مجموعه ای از قلاب ها برای اعمال. با استفاده از قلاب می توان
رفتار سریال ساز را بدون نیاز به تغییر فایل تولید شده سفارشی کنید، بنابراین
اگر کلاس منبع اصلاح شود، می توانید با خیال راحت آن را بازسازی کنید.
پوشه مقصد پوشه ای را که فایل ها در آن تولید می شوند را مشخص می کند.
توجه: این ابزار فقط در زمان اجرا Mono اجرا می شود، زیرا از برخی کلاس های داخلی استفاده نمی کند
در زمان اجراهای دیگر موجود است.
پیکربندی فایل FORMAT
فایل پیکربندی یک سند xml بر اساس دستور زبان زیر است ("?"
اختیاری، "*" 0 یا بیشتر):
*
نام ?
نام ?
نام ?
نام ?
?
*
?
*
یک فایل پیکربندی میتواند چندین عنصر «سریالساز» داشته باشد که هر کدام از آنها را مشخص میکند
کلاسی که برای آن یک سریال ساز همراه با چندین گزینه نسل تولید می شود. در
کلاس منبع در ویژگی های زیر مشخص می شود:
* کلاس : نام کلاس (شامل فضای نام).
* مجلس : نام اسمبلی می تواند شامل مسیر کامل باشد.
گزینه های تولید در عناصر فرزند مشخص شده است:
* خواننده : نام کلاس خواننده.
* noReader : اگر "درست" باشد، کلاس خواننده ایجاد نمی کند.
* نویسنده : نام کلاس نویسنده.
* baseSerializer : نام کلاس سریال ساز پایه xml. این مورد فقط 2.0 است.
* پیاده سازی : نام کلاس اجرای سریال ساز. این مورد فقط 2.0 است.
* بدون نویسنده : اگر "درست" باشد، کلاس نویسنده ایجاد نمی کند.
* فضای نام : فضای نام کلاس های خواننده و نویسنده.
* generateAsInternal : اگر "true" باشد، کلاس هایی را به صورت داخلی تولید می کند.
* outFileName : نام فایل تولید شده
* خواننده هوکس : فهرستی از قلابها برای اعمال به خواننده.
* نویسنده قلاب : فهرستی از قلاب هایی که باید برای نویسنده اعمال شود.
مشخص کردن قلاب
با استفاده از قلاب ها می توانید رفتار خوانندگان و نویسندگان را سفارشی کنید. مشخصات یک قلاب
این دستور زبان را دنبال می کند:
?
نام ?
نام *
نام ?
کد منبع ?
کد منبع ?
کد منبع ?
ویژگی "type" زمینه ای را که قلاب در آن اعمال می شود را مشخص می کند. می تواند یکی از
به شرح زیر است:
* خواص : قلاب در جایی اعمال میشود که ویژگیها سریالسازی/عدمسریالسازی شوند.
* عناصر : قلاب در جایی اعمال میشود که عناصر سریالسازی/عدمسریالسازی شدهاند.
* ویژگی نامشخص : قلاب در جایی اعمال می شود که ویژگی های ناشناخته پردازش می شوند.
* ناشناخته عنصر : قلاب در جایی که عناصر ناشناخته پردازش می شوند اعمال می شود.
* عضو : قلاب در جایی اعمال می شود که یک عضو سریالی/عدم سریال شود.
* نوع : قلاب برای کل نوع اعمال می شود.
عنصر "انتخاب" کلاس ها و اعضایی را که قلاب باید به آنها اضافه شود را مشخص می کند.
می تواند شامل عناصر زیر باشد:
* نام را تایپ کنید : کلاسی با آن نام انتخاب خواهد شد (باید فضای نام را در بر داشته باشد)
* typeAttribute : تمام کلاس هایی که آن ویژگی را دارند انتخاب می شوند
(نام کامل کلاس مشخصه، از جمله فضای نام را مشخص کنید). چندین نام ویژگی
را می توان مشخص کرد.
* typeMember : نام عضو کلاسی که قلاب باید برای آن اضافه شود.
کد منبع قلاب را می توان با استفاده از هر یک از عناصر زیر مشخص کرد:
* جایگزین کردن : کد منبع ارائه شده جایگزین تمام سریالسازی/آسیابزدایی میشود
عملیات در زمینه قلاب
* درج قبل از : کد منبع قبل از زمینه هوک اضافه خواهد شد.
* درج بعد : کد منبع پس از زمینه هوک اضافه خواهد شد.
هنگام نوشتن کد برای یک هوک می توانید از چند متغیر خاص که تعریف شده اند استفاده کنید
در طول فرآیند تولید کد متغیرها به شرح زیر هستند:
* $TYPE: نام کلاس در حال تولید، بدون فضای نام.
* $FULLTYPE: نام کامل کلاس در حال تولید، از جمله فضای نام.
* $OBJECT: شیء در حال سریال یا بی سریال. هنگام استفاده از یک خواننده جایگزین
قلاب از نوع "نوع"، کد قلاب باید شی deserialized را به این اختصاص دهد
متغیر.
* -I $ELEMENT: نام عنصر شیء در حال سریال سازی/عدم سریال.
* $NAMESPACE: فضای نام عنصر شیء در حال سریال سازی/عدم سریال سازی.
* $MEMBER: نام عضوی که سریالسازی شده/از سریال خارج میشود. فقط در "عضو" معتبر است
متن نوشته.
HOOK مثال ها
مثال زیر یک فراخوانی را به متد 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 ("Serializing MyClass");
Console.WriteLine ("MyClass serialized");
MyNamespace.MyClass
Console.WriteLine ("عضو سریالی $MEMBER");
این قلاب یک عنصر اضافی برای همه انواعی که دارای ویژگی سفارشی هستند می نویسد
"MyAttribute":
MyNamespace.MyAttribute
Writer.WriteStartElement ("privateData");
Writer.WriteString ($OBJECT.PrivateData);
Writer.WriteEndElement ();
پیکربندی فایل مثال
این فایل پیکربندی مورد استفاده برای تولید سریالساز برای 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 (Writer);
AUTHORS
لوئیس سانچز گوال ([ایمیل محافظت شده])
با استفاده از خدمات onworks.net از genxs به صورت آنلاین استفاده کنید