[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;
}
}
我得到了这个类,如果我编写自己的方法来序列化/ deSerialize我可以序列化所有成员(私有/公共)。当我在.net webservice中使用它时,只有公共成员才能获得序列化,而不是私有。我究竟做错了什么?搜索整个SO无法找到解决方案。有没有办法告诉webservice序列化所有成员(public.private,internal ..)
答案 0 :(得分:0)
听起来好像您的webservice代理可能使用的是XmlSerializer,而不是DataContractSerializer。如果您与旧的asmx wbservices或非.net Web服务进行通信,有时可能会出现这种情况。尝试将私有字段更改为公共属性,看看是否有效。
[DataMember()]
public string _fname { get; set; }
[DataMember()]
public string _lname { get; set; }
[DataMember()]
public string _nickName { get; set; }
如果有效,那么您正在使用XmlSerializer。它无法序列化私有字段,但DatacontractSerializer可以。