2015-06-30 39 views
1

我有一个相当复杂的业务对象,我似乎遇到了麻烦。该对象将序列化没有问题,我可以去到它被序列化到的XML文件,并看到值确实存储在文件中。但是,当我尝试反序列化对象时,有问题的属性不会保存值,它们是字符串,所以它们以String.Empty值的形式出现。该对象有很多属性,其中大部分都没有问题,但我有这样一组字符串属性,似乎被卡住了。例如XML序列化问题 - 对象将序列化但不反序列化一些属性

[Serializable] 
public class Foo 
{ 
    public String NameWorking { get; set; } 
    public String TitleNotWorking { get; set; } 
    ... 
} 

当我序列化到“obj.xml”,并用记事本打开所述文件,我可以看到节点NameValue和节点TitleValue,这是正确的序列化,但是当我跟踪调试,当“obj.xml”文件被反序列化,得到的Foo对象具有NameWorking的正确值,但对于TitleNotWorking只具有String.Empty。是否有某种可能导致此问题的错误?有没有解决方法? 此外,我不知道这是否是问题的一部分,但有问题的属性是应用程序中的数据绑定属性。但所有其他的工作特性也是如此。

回答

1

您将需要XML Element

在你的情况下,将以下

[Serializable] 
public class Foo 
{ 
    [XmlElement] 
    public String NameWorking { get; set; } 

    [XmlElement] 
    public String TitleNotWorking { get; set; } 
    ... 
} 
+0

奇怪,因为我有在工作,没有XMLAttribute标签其他字符串属性,但我会尝试并看看它是否有任何影响。谢谢! – Wanabrutbeer

+0

@Wanabrutbeer它可能也是'XmlElement',我不完全确定哪个 – Ramie

+0

添加元素名称[XmlElement(“TitleNotWorking”)]。确保名称拼写正确,大小写字母正确。类中的对象名称不必与XML文件中的标签匹配。 XmlElement中的名称用于交叉引用标签和类名称。 – jdweng