【发布时间】:2010-12-11 16:22:39
【问题描述】:
我的一些类
[Serializable]
[DataContract(Namespace = "")]
public class SomeClass
{
[DataMember]
public string FirstName
{
get; set;
}
[DataMember]
public string LastName
{
get; set;
}
[DataMember]
private IDictionary<long, string> customValues;
public IDictionary<long, string> CustomValues
{
get { return customValues; }
set { customValues = value; }
}
}
我的 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<SomeClass>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
<CustomValues>
<Value1>One</Value1>
<Value2>Two</Value2>
</CustomValues >
</SomeClass>
但我的问题出在类上,我只在反序列化时为我的方法获取一些数据。
var xmlRoot = XElement.Load(new StreamReader(
filterContext.HttpContext.Request.InputStream,
filterContext.HttpContext.Request.ContentEncoding));
XmlDictionaryReader reader = XmlDictionaryReader.CreateDictionaryReader(xmlRoot.CreateReader());
DataContractSerializer ser = new DataContractSerializer(typeof(SomeClass));
//Deserialize the data and read it from the instance.
SomeClass someClass = (SomeClass)ser.ReadObject(reader, true);
所以当我检查“someClass”时,FirstName 的值为 john,但 LastName 的值为 null。
神秘的是我怎样才能得到一些数据,而不是类的所有数据。 所以 DataContractSerializer 在反序列化时不会从 xml 中提取所有数据。
我是不是做错了什么。
感谢任何帮助。提前致谢。
如果有人有同样的问题或有解决方案,请告诉我
【问题讨论】:
-
DataMember 属性不应该在公共财产上而不是在私有财产上吗?
标签: c# serialization datacontractserializer