【问题标题】:.Net Xml Serializer uses private attribute name instead of public one.Net Xml Serializer 使用私有属性名称而不是公共属性名称
【发布时间】:2016-03-24 20:50:16
【问题描述】:

我用 xsd.exe 生成了一个类,结果是这样的(部分):

public partial class MyClass{       

    private SignatureType signatureField;

    [System.Xml.Serialization.XmlElementAttribute(Namespace = "http://www.w3.org/2000/09/xmldsig#")]
    public SignatureType Signature {
        get {
            return this.signatureField;
        }
        set {
            this.signatureField = value;
        }
    }    
}

我正在编写一个 Asp.Net 5 控制器,该控制器将该对象输出为 XML,问题是序列化器使用的是私有属性的名称,而不是像这样结束的公共名称

<MyClass>
    <signatureField></signatureField>
</MyClass>

带有字段后缀。

这可能是什么原因造成的?

谢谢

【问题讨论】:

  • 能否请您显示返回对象或执行序列化的代码?
  • 如果 1) 您将班级标记为 [Serializable] 并且 2) 您实际上使用的是 DataContractSerializer 而不是 XmlSerializer,这可能会发生。详情可以查看Is there a way to make DataContractSerializer output cleaner XML?。您可能需要提供complete examlple 以便我们提供更多帮助。
  • 是的,该类被标记为可序列化,我会尝试不使用它。
  • 执行序列化的代码是.net mvc...控制器返回一个对象,我在标题中要求xml

标签: c# xml asp.net-mvc xmlserializer


【解决方案1】:

删除 [Serializable] 属性对我有用。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 2017-12-09
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多