实体框架的分部类中的字符串属性未序列化

本文关键字:字符串 属性 序列化 框架 实体 | 更新日期: 2023-09-27 18:27:43

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

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)

实体框架的分部类中的字符串属性未序列化

[XmlElement]表示您正在使用XmlSerializer;现在,如果我们考虑:

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

注意,XmlSerializer将忽略这一点,因为它知道不能反序列化(没有setter)。序列化程序还希望以后能够反序列化数据。它不序列化它,因为没有setter就无法提供反序列化。

添加一个setter。理想情况下,例如:

[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; } }

(再次单独添加测试数据)

取消序列化程序需要一个序列化属性的setter。对于要由XML序列化程序序列化的每个属性,必须有一个公共getter和setter。