C#中公共属性支持私有字段的XML序列化

时间:2014-04-25 17:40:16

标签: c# .net xml-serialization

我希望有人可以帮我解决这个问题,因为我整个上午都在试着找出解决这个问题的方法。

我有一个需要序列化为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" />。任何建议,将不胜感激。

提前致谢!

2 个答案:

答案 0 :(得分:3)

请在此处查看此答案:

Why are properties without a setter not serialized

当你有&#34; readonly&#34;它似乎是一个串行器限制(按设计)属性,尝试添加一个&#34; setter&#34;它可能会奏效。

答案 1 :(得分:2)

我认为 XMLSerializer 无法对只读属性进行重写。