System.Configuration.ConfigurationElementを拡張し、DeserializeElementをオーバーライドすると、eveythingは期待通りに機能し、常に提供され、機能するXmlReaderから必要なものを取得できます。Configuration.Save.SerializeElementに渡されたXmlWriterは、常にConfiguration.Saveでnullです。
残念ながら、SerializeElementをオーバーライドすると、それに提供されているXmlWriterは何らかの理由で常にnullですが、なぜその理由がわかりません。私は他のメソッドをオーバーライドし、呼び出しでbase.SerializeElementを最初に呼び出すことを試みました。いずれにしても、Configuration.Saveメソッドが呼び出されたときにXmlWriterがSerializeElementに渡されていることを確認する方法がまだ見つかっていません。