首页 > 解决方案 > 如何将 XSI 类型添加到使用 LINQ 序列化的元素

问题描述

我想序列化特定类的类型并包含特定 XSI 类型的对象

我可以在 LINQ 中执行此操作吗?

标签: c#linqserializationxsi

解决方案


LINQ 代表 Language-Integrated-Query,它就是这样:一种查询技术,允许您将来自各种数据源的数据查询到对象结果中。你想做一些完全不同的事情,所以 LINQ 是错误的工具。

另外,我猜用于从示例 XML 文件(或模式)生成类的 xsd.exe 不会对您有太大帮助,因为 afaik 它不够聪明,无法检测模式类之间的继承。

因此,我建议手动编写 XML 模式,然后使用 xsd.exe 为该模式生成类。然后,您可以实例化这些类,并且XmlSerializer会按照您的预期为您提供输出。

架构应该有点像下面(我在这里排除了实际的模型内容,您必须选择是否将其放入ModelSettingsModel)。

<xs:element name="Model" type="Model" />
<xs:class name="Model" abstract="True">
  <xs:complexContent />
</xs:class>
<xs:class name="SettingsModel">
  <xs:complexContent>
    <xs:extension base="Model" />
  </xs:complexContent>
</xs:class>

推荐阅读