我正在尝试对对象使用IXmlSerializable
ReadXml
andWriteXml
方法XDocument
(使用Foo.WriteTo( ... )
andXDocument.Load( ... )
方法。
我想将实现IXmlSerializable
接口的类存储到存储在默认应用程序设置类中的变量中。
尝试这样做会导致非常令人讨厌的失败:
这是设置类:
这是包装的类
[Serializable]
class XmlModel : IXmlSerializable {
public XDocument _foo = new XDocument(
new XElement( "Foo",
new XElement( "Bar", "Baz" ) ) );
public XmlModel( XDocument Foo ) {
_foo = Foo;
}
public XmlSchema GetSchema( ) {
return null;
}
public void ReadXml( XmlReader reader ) {
this._foo = XDocument.Load( reader );
}
public void WriteXml( XmlWriter writer ) {
_foo.WriteTo( writer );
}
}
Aaaand 这是 Program 类(我只使用一个简单的控制台应用程序来重现问题)
class Program {
static void Main( string[ ] args ) {
if ( Settings.Default.DoUpgrade ) {
Settings.Default.Upgrade( );
Settings.Default.DoUpgrade = false;
Settings.Default.Save( );
}
Console.WriteLine( Settings.Default.Foo._foo );
Console.ReadLine( );
}
}
弹出此异常是因为我打开了所有异常,但即使它们关闭,ApplicationSettings
文件也不会获取数据。
为什么会这样?