如何忽略使用xsd或xsd2code指定后缀的字段和属性的生成

本文关键字:字段 后缀 属性 何忽略 xsd xsd2code | 更新日期: 2023-09-27 18:20:07

我有一个C#应用程序,它使用Json与服务器通信。

服务器团队给了我一个xsd,我用它来生成带有xsl2代码的C#类。

在执行此操作时,对于xsd中的每个字段,xsd2code在生成的C#类中创建2个字段。一个名称与xsd中的名称相同,另一个名称后缀为"指定"。

例如:下面是我的xsd 中的一个xml

<xsd:element name="depth" type="xsd:int" minOccurs="0"/>

以下是它生成的相应字段。

private int depthField;
private bool depthFieldSpecified;
public int depth {
        get {
            return this.depthField;
        }
        set {
            this.depthField = value;
        }
    }
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool depthSpecified {
        get {
            return this.depthFieldSpecified;
        }
        set {
            this.depthFieldSpecified = value;
        }
    }

有没有办法避免字段后缀为"指定"?我需要删除它,因为当我试图将对象序列化回json字符串时,它会引起问题。即使我已经填充了属性depthField,它也不会通过查看默认为false的depthFieldSpecified布尔值来序列化它。

如果有人能给我指明正确的方向,我会很高兴。提前感谢。

如何忽略使用xsd或xsd2code指定后缀的字段和属性的生成

据我所知,你做不到。当再次序列化为XML时,Specified属性对XmlSerializer有非常特殊的用途。

我自己也尝试过在Xsd2Code生成器中"修复"这个问题,但到目前为止没有成功。不过,您可以通过从CodePlex下载Xsd2Code的源代码来尝试一下。