我希望有人可以帮我解决这个问题,因为我整个上午都在试着找出解决这个问题的方法。
我有一个需要序列化为XML的类。只要我序列化一个简单的公共属性,XML序列化就可以工作。但是,如果我有公共属性作为支持私有字段的getter,则公共属性不会被序列化(尽管用{修饰} {1}})。我已经通过MSDN和StackOverflow寻找答案,但无济于事。我在下面嘲笑了一个例子。
[XmlAttribute()]
}
当我希望它返回[Serializable()]
[XmlRoot("foobar")]
public class FooBar
{
[XmlAttribute("foo")]
public string Foo { get; set; }
private bool bar;
[XmlAttribute("bar")]
public string Bar
{
get { return ConvertBoolToYesNo(bar); }
}
public FooBar()
{
Foo = "foo";
bar = true;
}
public string ConvertBoolToYesNo(bool boolToConvert)
{
if(boolToConvert == true)
return "yes";
else
return "no";
}
时,会返回<?xml version="1.0" encoding="us-ascii"?><foobar foo="foo" />
。任何建议,将不胜感激。
提前致谢!
答案 0 :(得分:3)
请在此处查看此答案:
Why are properties without a setter not serialized
当你有&#34; readonly&#34;它似乎是一个串行器限制(按设计)属性,尝试添加一个&#34; setter&#34;它可能会奏效。
答案 1 :(得分:2)
我认为 XMLSerializer 无法对只读属性进行重写。