这是 genxs 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
genxs - Mono 的 Xml 序列化器生成器
概要
基因 配置文件 [目标文件夹]
商品描述
基因 是为类生成自定义 XML 序列化编写器和读取器的工具。
配置文件 是配置文件,它指定了几个信息,例如
生成读取器和写入器的类、类的名称和命名空间
生成,以及一组要应用的钩子。 通过使用钩子,可以
自定义序列化程序的行为而无需修改生成的文件,因此
如果源类被修改,您可以安全地重新生成它。
目的地文件夹 指定将生成文件的文件夹。
注意: 这个工具只在 Mono 运行时运行,因为它使用了一些内部类,而不是
在其他运行时可用。
配置 文件 FORMAT
配置文件是一个基于以下语法的xml文件(“?”表示
可选,"*" 0 或更多):
*
姓名?
姓名?
姓名?
姓名?
?
*
?
*
一个配置文件可以有多个“序列化器”元素,每个元素指定
为其生成序列化程序以及多个生成选项的类。 这
源类在以下属性中指定:
* 程 : 类的名称(包括命名空间)。
* 部件 : 程序集名称。 它可以包含完整路径。
生成选项在子元素中指定:
* 读者 : 阅读器类的名称。
* 没有读者 : 如果为“true”,则不会生成阅读器类。
* 作家 : 编写器类的名称。
* 基本序列化程序 : 基本 xml 序列化程序类的名称。 此项目仅为 2.0。
* 履行 : 序列化器实现类的名称。 此项目仅为 2.0。
* 没有作家 : 如果为“true”,则不会生成 writer 类。
* 命名空间 : 读写器类的命名空间。
* 生成为内部 :如果为“true”,则生成内部类。
* 输出文件名 : 生成文件的名称。
* 读者钩子 : 应用于读者的钩子列表。
* 作家胡克斯 : 应用于作者的钩子列表。
指定 挂钩
使用钩子可以自定义读者和作者的行为。 吊钩规格
遵循这个语法:
?
姓名?
姓名*
姓名?
源代码?
源代码?
源代码?
“type”属性指定应用钩子的上下文。 它可以是其中之一
执行以下操作:
* 属性 : 在属性被序列化/反序列化的地方应用钩子。
* 分子 : 在元素被序列化/反序列化的地方应用钩子。
* 未知属性 : 在处理未知属性的地方应用钩子。
* 未知元素 : 在处理未知元素的地方应用钩子。
* 会员 :在成员被序列化/反序列化的地方应用钩子。
* 类型 :钩子适用于整个类型。
“select”元素指定必须添加钩子的类和成员。
它可以包含以下元素:
* 类型名称 :将选择具有该名称的类(必须包含命名空间)
* 类型属性 :将选择应用了该属性的所有类
(指定完整的属性类名,包括命名空间)。 几个属性名
可以指定。
* 类型成员 : 必须为其添加钩子的类成员的名称。
可以使用以下任何元素指定钩子源代码:
* 更换 :提供的源代码将替换所有序列化/反序列化
钩子上下文中的操作。
* 插入前 : 源代码将添加到钩子上下文之前。
* 插入后 :将在钩子上下文之后添加源代码。
在为钩子编写代码时,您可以使用一些定义的特殊变量
在代码生成过程中。 变量如下:
* $类型: 正在生成的类的名称,没有命名空间。
* $完整类型: 正在生成的类的全名,包括命名空间。
* $对象: 被序列化或反序列化的对象。 使用替换读卡器时
类型为“type”的钩子,钩子代码必须将反序列化的对象分配给这个
变量。
* -I $ELEMENT:被序列化/反序列化的对象元素的名称。
* $命名空间: 被序列化/反序列化的对象元素的命名空间。
* $会员: 被序列化/反序列化的成员的名称。 仅在“会员”有效
上下文。
HOOK 示例
以下示例在任何反序列化之后添加对 Validate 方法的调用
宾语:
System.Xml.Schema.XmlSchema.Validate$TYPE ($OBJECT);
此示例指定用于反序列化 XmlSchema 类的代码:
系统.Xml.Schema.XmlSchema
$OBJECT = System.Xml.Schema.XmlSchema.Read (Reader, null);
那个指定了用于读取 XmlSchema 实例的代码:
系统.Xml.Schema.XmlSchema
$OBJECT.Write (Writer);
使用这两个钩子,序列化器将在序列化类时打印一些信息
“我的课”:
我的命名空间.MyClass
Console.WriteLine ("序列化 MyClass");
Console.WriteLine("MyClass 序列化");
我的命名空间.MyClass
Console.WriteLine ("序列化成员 $MEMBER");
这个钩子为所有具有自定义属性的类型写了一个额外的元素
“我的属性”:
我的命名空间.我的属性
Writer.WriteStartElement("privateData");
Writer.WriteString ($OBJECT.PrivateData);
Writer.WriteEndElement();
配置 文件 例
这是用于为 ServiceDescription 生成序列化程序的配置文件:
ServiceDescriptionReaderBase
ServiceDescriptionWriterBase
系统.Web.服务.描述
ServiceDescriptionSerializerBase.cs
System.Web.Services.Configuration.XmlFormatExtensionPointAttribute
ServiceDescription.ReadExtension (Reader, $OBJECT);
系统.Xml.Schema.XmlSchema
$OBJECT = System.Xml.Schema.XmlSchema.Read (Reader, null);
System.Web.Services.Configuration.XmlFormatExtensionPointAttribute
ServiceDescription.WriteExtensions (Writer, $OBJECT);
系统.Xml.Schema.XmlSchema
$OBJECT.Write (Writer);
作者
路易斯·桑切斯·瓜尔 (Lluis Sanchez Gual)[电子邮件保护])
使用 onworks.net 服务在线使用 genxs