オブジェクトでIXmlSerializable
ReadXml
andWriteXml
メソッドを使用しようとしています ( andメソッドを使用します。XDocument
Foo.WriteTo( ... )
XDocument.Load( ... )
IXmlSerializable
インターフェイスを実装するクラスを、デフォルトの Application Settings クラス内に格納されている変数に格納したいと考えています。
これを行おうとすると、かなり厄介な失敗が発生します。
これは設定クラスです:
これは、
[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 );
}
}
ああ、これは 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
ファイルはデータを取得していません。
なぜこうなった?