如何序列化xmlSerialization中的私有成员

本文关键字:成员 序列化 xmlSerialization | 更新日期: 2023-09-27 18:09:42

[DataContract()]
    public class Person
    {
        [DataMember()]
        private string _fname;
        [DataMember()]
        private string _lname;
        [DataMember()]
        public string _nickName;
        public Person(string f, string l)
        {
            _fname = f;
            _lname = l;
            _nickName = _fname + _lname.Substring(0, 1);
        }
        public string FullName()
        {
            return _fname + " " + _lname;
        }
    }

我得到了这个类,如果我自己编写序列化/反序列化的方法,我可以序列化所有成员(私有/公共)。然而,当我在。net webservice中使用它时,只有public成员被序列化,而不是private成员。我做错了什么?找遍了整个过程,还是找不到解决办法。是否有一种方法告诉webservice序列化所有成员(public) ?私人的,内部. .)

如何序列化xmlSerialization中的私有成员

听起来可能你的web服务代理可能使用XmlSerializer,而不是DataContractSerializer。如果您使用旧的asmx web服务或不使用。net web服务进行通信,有时可能会出现这种情况。尝试将您的私有字段更改为公共属性,看看是否有效。

[DataMember()]
public string _fname { get; set; }
[DataMember()]
public string _lname { get; set; }
[DataMember()]
public string _nickName { get; set; }

如果它工作,那么你正在使用XmlSerializer。它不能序列化私有字段,但是DatacontractSerializer可以。