dotnet/Documentation/compatibility/xmlserializer-fails-while-s...

2.1 KiB

XmlSerializer fails while serializing a type that hides an accessible member with an inaccessible one

Scope

Minor

Version Introduced

4.5

Source Analyzer Status

Planned

Change Description

When serializing a derived type, the XmlSerializer can fail if the type contains an inaccessible field or property that hides (via the 'new' keyword) a field or property of the same name that was previously accessible (public, for example) on the base type.

  • Quirked
  • Build-time break

This problem can be solved by making the new, hiding member accessible to the XmlSerializer (by marking it public, for example).

Alternatively, the following config setting will revert to 4.0 XmlSerializer behavior, which will fix the problem:

<system.xml.serialization>
	<xmlSerializer useLegacySerializerGeneration="true" />
</system.xml.serialization>

Affected APIs

  • M:System.Xml.Serialization.XmlSerializer.Serialize(System.IO.Stream,System.Object)
  • M:System.Xml.Serialization.XmlSerializer.Serialize(System.IO.TextWriter,System.Object)
  • M:System.Xml.Serialization.XmlSerializer.Serialize(System.Object,System.Xml.Serialization.XmlSerializationWriter)
  • M:System.Xml.Serialization.XmlSerializer.Serialize(System.Xml.XmlWriter,System.Object)
  • M:System.Xml.Serialization.XmlSerializer.Serialize(System.IO.Stream,System.Object,System.Xml.Serialization.XmlSerializerNamespaces)
  • M:System.Xml.Serialization.XmlSerializer.Serialize(System.IO.TextWriter,System.Object,System.Xml.Serialization.XmlSerializerNamespaces)
  • M:System.Xml.Serialization.XmlSerializer.Serialize(System.Xml.XmlWriter,System.Object,System.Xml.Serialization.XmlSerializerNamespaces)
  • M:System.Xml.Serialization.XmlSerializer.Serialize(System.Xml.XmlWriter,System.Object,System.Xml.Serialization.XmlSerializerNamespaces,System.String)
  • M:System.Xml.Serialization.XmlSerializer.Serialize(System.Xml.XmlWriter,System.Object,System.Xml.Serialization.XmlSerializerNamespaces,System.String,System.String)

Category

Serialization

More information