C# 如何在xmlSerialization中序列化私有成员
我得到了这个类,如果我编写自己的方法来序列化/反序列化,我可以序列化所有成员(private/public)。然而,当我在.NETWebService中使用它时,只有公共成员获得序列化,而不是私有成员。我做错了什么?找遍了,所以找不到解决办法。有没有办法告诉webservice序列化所有成员(public.private,internal…)听起来您的webservice代理可能使用XmlSerializer,而不是DataContractSerializer。如果您正在与旧的asmx wbservices通信,或者与非.net web服务通信,有时可能会出现这种情况。尝试将您的私有字段更改为公共属性,看看是否有效C# 如何在xmlSerialization中序列化私有成员,c#,web-services,serialization,xmlserializer,datacontractserializer,C#,Web Services,Serialization,Xmlserializer,Datacontractserializer,我得到了这个类,如果我编写自己的方法来序列化/反序列化,我可以序列化所有成员(private/public)。然而,当我在.NETWebService中使用它时,只有公共成员获得序列化,而不是私有成员。我做错了什么?找遍了,所以找不到解决办法。有没有办法告诉webservice序列化所有成员(public.private,internal…)听起来您的webservice代理可能使用XmlSerializer,而不是DataContractSerializer。如果您正在与旧的asmx wbse
[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;
}
}
如果它能工作,那么您就是在使用XmlSerializer。它不能序列化私有字段,但DatacontractSerializer可以。您尝试过声明它们吗?是的@Sayse,事实上我最初使用的是[serializable],这也遇到了同样的问题。然后我问了一个问题,但运气不好。使用的序列化程序是什么?XmlSerializer还是DataContractSerializer?我猜Web服务正在使用前者?那样的话,你能换成后者吗?后者可以轻松地处理这个问题(即使没有所有这些属性)。但是由于一些限制,我不能使用属性。如何要求VS使用DataContractSerializer而不是xml序列化程序。顺便说一句,我使用的是VS2010,我的webservice项目的.net framework是3.5,您的webservice是wcf webservice吗?还是ASP.NET.asmx?是的,这就是原因。如果您想使用DataContractSerializer对私有成员进行序列化,则必须访问WCF webserivces。请阅读这篇相关文章,尤其是#4。
[DataMember()]
public string _fname { get; set; }
[DataMember()]
public string _lname { get; set; }
[DataMember()]
public string _nickName { get; set; }