2

我正在尝试序列化实体框架的部分类中的字符串属性。

public partial class tableTest : EntityObject
{
    public String testA
    {
        get
        {
            return "ok";
        }
    }

    [XmlElement("TestB")]
    public List<String> TestB
    {
        get { var list = new List<String>(); list.Add("testB"); return list; }
    }
}

属性 TestA 不起作用,但属性 TestB 起作用。我尝试将 XmlElement、XmlAttribute、DataMemberAttribute... 添加到 TestA,但没有任何效果。

有人猜吗?

(.net 框架 4.5)

4

2 回答 2

3

[XmlElement]您正在使用的建议XmlSerializer;现在,如果我们考虑:

public String testA
{
    get
    {
        return "ok";
    }
}

请注意,XmlSerializer它将忽略这一点,因为它知道它无法反序列化它(没有设置器)。序列化程序还希望能够在之后反序列化数据。它不会序列化它,因为它不能在没有设置器的情况下提供反序列化。

添加一个二传手。理想情况下,例如:

[XmlElement("testA")]
public string TestA {get;set;}

(并分别给它值"ok"

另请注意,您的列表目前也不会正确反序列化;我会建议:

private readonly List<string> testB = new List<string>();
[XmlElement("TestB")]
public List<string> TestB { get { return testB; } }

(再次 - 分别添加测试数据)

于 2013-08-15T13:16:02.090 回答
0

反序列化器需要一个序列化属性的设置器。对于要由 XML 序列化程序序列化的每个属性,您必须有一个公共的 getter 和 setter。

于 2013-08-15T13:16:42.177 回答