我正在尝试在实体框架的部分类中序列化字符串属性。
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 framework 4.5)
答案 0 :(得分:3)
[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; } }
(并再次 - 分别添加测试数据)
答案 1 :(得分:0)
反序列化器需要一个用于序列化属性的setter。对于要由XML序列化程序序列化的每个属性,您必须具有公共getter和setter。