Đây là genx lệnh có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
genxs - Bộ tạo chuỗi nối tiếp Xml của Mono
SYNOPSIS
genx configFile [destinationFolder]
MÔ TẢ
genx là một công cụ để tạo người viết và trình đọc tuần tự hóa XML tùy chỉnh cho các lớp.
tập tin cấu hình là tệp cấu hình chỉ định một số thông tin, chẳng hạn như
lớp để tạo trình đọc và người viết, tên và không gian tên của các lớp
để tạo và một tập hợp các hook để áp dụng. Bằng cách sử dụng móc, có thể
tùy chỉnh hành vi của bộ tuần tự hóa mà không cần sửa đổi tệp đã tạo, vì vậy
bạn có thể tạo lại nó một cách an toàn nếu lớp nguồn được sửa đổi.
đích đến chỉ định thư mục nơi các tệp sẽ được tạo.
LƯU Ý: Công cụ này chỉ chạy trong thời gian chạy Mono, vì nó sử dụng một số lớp bên trong không
có sẵn trong các thời gian chạy khác.
CẤU HÌNH FILE FORMAT
Tệp cấu hình là tài liệu xml dựa trên ngữ pháp sau ("?" Có nghĩa là
tùy chọn, "*" 0 hoặc nhiều hơn):
*
Tên ?
Tên ?
Tên ?
Tên ?
?
*
?
*
Một tệp cấu hình có thể có nhiều phần tử "serializer", mỗi phần tử chỉ định
lớp để tạo bộ tuần tự cùng với một số tùy chọn thế hệ. Các
lớp nguồn được chỉ định trong các thuộc tính sau:
* tốt nghiệp lớp XNUMX : tên của lớp (bao gồm cả vùng tên).
* lắp ráp : tên lắp ráp. Nó có thể bao gồm đường dẫn hoàn chỉnh.
Các tùy chọn tạo được chỉ định trong các phần tử con:
* đọc : tên lớp độc giả.
* không có người đọc : nếu "true", nó không tạo ra lớp người đọc.
* nhà văn : tên lớp người viết.
* cơ sở nối tiếp : tên của lớp bộ tuần tự xml cơ sở. Mục này chỉ là 2.0.
* thực hiện : tên của lớp thực hiện bộ tuần tự. Mục này chỉ là 2.0.
* không có nhà văn : nếu "true", nó không tạo ra lớp nhà văn.
* không gian tên : không gian tên của các lớp người đọc và người viết.
* createAsInternal : nếu "true", nó tạo ra các lớp dưới dạng nội bộ.
* outFileName : tên của tệp được tạo.
* đầu đọcMóc : một danh sách các móc để áp dụng cho người đọc.
* nhà văn : một danh sách các móc để áp dụng cho người viết.
ĐẶC ĐIỂM KỸ THUẬT SÁCH
Sử dụng hook, bạn có thể tùy chỉnh hành vi của người đọc và người viết. Một đặc điểm kỹ thuật móc
tuân theo ngữ pháp này:
?
Tên ?
Tên *
Tên ?
mã nguồn ?
mã nguồn ?
mã nguồn ?
Thuộc tính "type" chỉ định ngữ cảnh mà hook được áp dụng. Nó có thể là một trong những
sau đây:
* thuộc tính : hook được áp dụng khi các thuộc tính được tuần tự hóa / deserialized.
* các yếu tố : hook được áp dụng khi các phần tử được tuần tự hóa / deserialized.
* chưa biết : hook được áp dụng khi các thuộc tính không xác định được xử lý.
* chưa biết : hook được áp dụng khi các phần tử không xác định được xử lý.
* hội viên : hook được áp dụng khi một thành viên được tuần tự hóa / deserialized.
* kiểu : móc được áp dụng cho toàn bộ loại.
Phần tử "select" chỉ định các lớp và thành viên mà hook phải được thêm vào.
Nó có thể chứa các yếu tố sau:
* tên loại : lớp có tên đó sẽ được chọn (phải bao gồm không gian tên)
* loạiAttribute : tất cả các lớp có thuộc tính đó được áp dụng sẽ được chọn
(chỉ định tên lớp thuộc tính đầy đủ, bao gồm cả vùng tên). Một số tên thuộc tính
có thể được chỉ định.
* loạiThành viên : tên của thành viên lớp mà hook phải được thêm vào.
Mã nguồn hook có thể được chỉ định bằng cách sử dụng bất kỳ phần tử nào sau đây:
* thay thế : mã nguồn được cung cấp sẽ thay thế tất cả tuần tự hóa / giải mã hóa
các hoạt động trong ngữ cảnh móc nối.
* chènTrước : mã nguồn sẽ được thêm vào trước ngữ cảnh móc nối.
* chènSau : mã nguồn sẽ được thêm vào sau ngữ cảnh móc nối.
Khi viết mã cho hook, bạn có thể sử dụng một số biến đặc biệt được xác định
trong quá trình tạo mã. Các biến như sau:
* LOẠI $: tên của lớp được tạo, không có không gian tên.
* $ FULLTYPE: tên đầy đủ của lớp được tạo, bao gồm cả không gian tên.
* $ ĐỐI TƯỢNG: đối tượng đang được tuần tự hóa hoặc giải mã hóa. Khi sử dụng đầu đọc thay thế
hook thuộc loại "type", mã hook phải gán đối tượng deserialized cho đối tượng này
biến.
* -I $ ELEMENT: tên phần tử của đối tượng được tuần tự hóa / giải mã hóa.
* $ NAMESPACE: không gian tên của phần tử của đối tượng đang được tuần tự hóa / giải mã hóa.
* THÀNH VIÊN $: tên của thành viên đang được tuần tự hóa / gỡ bỏ trên không. Chỉ hợp lệ trong "thành viên"
bối cảnh.
HOOK VÍ DỤ
Ví dụ sau đây thêm một lệnh gọi đến một phương thức Xác thực sau khi giải mã hóa bất kỳ
vật:
System.Xml.Schema.XmlSchema.Validate $ TYPE ($ OBJECT);
Ví dụ này chỉ định mã được sử dụng để giải mã lớp XmlSchema:
System.Xml.Schema.XmlSchema
$ OBJECT = System.Xml.Schema.XmlSchema.Read (Reader, null);
Cái đó chỉ định mã được sử dụng để đọc các phiên bản XmlSchema:
System.Xml.Schema.XmlSchema
$ OBJECT.Write (Người viết);
Với hai móc nối này, bộ tuần tự sẽ in một số thông tin khi tuần tự hóa lớp
"Lớp học của tôi":
MyNamespace.MyClass
Console.WriteLine ("Serializing MyClass");
Console.WriteLine ("MyClass serialized");
MyNamespace.MyClass
Console.WriteLine ("Thành viên tuần tự $ MEMBER");
Móc này viết một phần tử bổ sung cho tất cả các loại có thuộc tính tùy chỉnh
"MyAttribute":
MyNamespace.MyAttribute
Writer.WriteStartElement ("privateData");
Writer.WriteString ($ OBJECT.PrivateData);
Nhà văn.WriteEndElement();
CẤU HÌNH FILE THÍ DỤ
Đây là tệp cấu hình được sử dụng để tạo bộ tuần tự cho ServiceDescription:
ServiceDescriptionReaderBase
ServiceDescriptionWriterBase
System.Web.Services.Description
ServiceDescriptionSerializerBase.cs
System.Web.Services.Configuration.XmlFormatExtensionPointAttribute
ServiceDescription.ReadExtension (Trình đọc, $ 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 (Người viết);
TÁC GIẢ
Lluis Sanchez Gual ([email được bảo vệ])
Sử dụng genxs trực tuyến bằng các dịch vụ onworks.net