.net 4.6 Serializable类

时间:2017-10-25 18:03:33

标签: c# .net xml serialization deserialization

我是序列化的新手,我遇到了问题。我有一个可序列化的类,它必须包含一个方法。但由于该方法,我在序列化程序初始化期间收到错误(当我评论该方法时,不会抛出任何错误)。 问题是 - 有没有办法在类中标记方法,所以序列化程序会忽略它并正常工作?

这是我的可序列化类:

[Serializable]
    public class Key
    {
        [XmlAttribute("Id")]
        public Guid Id { get; set; }

        [XmlAttribute("Kid")]
        public Guid Kid { get; set; }

        [XmlElement("CEK")]
        public string CEK { private get; set; }

        public string Foo()
        {...}
    }

我在数据隐私方面做了一些修改,但它不会影响主题。

以下是我如何进行序列化:

        StringReader strReader = null;
            XmlSerializer serializer = null;
            XmlTextReader xmlReader = null;
            Object obj = null;
            try
            {
                strReader = new StringReader(xml);
                serializer = new XmlSerializer(objectType,
                    new XmlRootAttribute
                    {
                        ElementName = "someNS",
                        Namespace = "url.to.some.namespace"
                    });
                xmlReader = new XmlTextReader(strReader);
                obj = serializer.Deserialize(xmlReader);
         }

此部分引发错误:

serializer = new XmlSerializer(objectType,
    new XmlRootAttribute
    {
        ElementName = "someNS",
        Namespace = "url.to.some.namespace"
    });

更新: 对,忘了错误。它是以下内容:

  

System.InvalidOperationException:'反映类型时出错   'MyProject.Objects.Key''。

和内在的例外:

  

InvalidOperationException:反映属性时出错   '键'。   InvalidOperationException:存在反映类型“MyProject.Objects.Key”的错误。

1 个答案:

答案 0 :(得分:1)

修正了它:

[XmlElement("CEK")]
public string CEK { private get; set; }

此属性导致异常;你无法在序列化类中获得私有方法。