From 03f2ff096a5310f985b20624c5de4fb5c4ff119d Mon Sep 17 00:00:00 2001 From: Marcos Henrich Date: Mon, 11 Jan 2016 17:54:52 +0000 Subject: [PATCH] [System.Xml] Fix sub class serialization on lists Fixes failure, where XmlSerializer would crash while serializing a list with multiple XmlElement when a sub class of the XmlElement is used. Fixes #36829. --- .../System.XML/System.Xml.Serialization/XmlTypeMapping.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs index aded011e986..f70bd99464b 100644 --- a/mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs +++ b/mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs @@ -646,8 +646,15 @@ namespace System.Xml.Serialization { if (memberValue == null) return null; Type type = memberValue.GetType(); - foreach (XmlTypeMapElementInfo elem in _itemInfo) - if (elem.TypeData.Type == type) return elem; + XmlTypeMapElementInfo bestMatch = null; + foreach (XmlTypeMapElementInfo elem in _itemInfo) { + if (elem.TypeData.Type == type) + return elem; + if (elem.TypeData.Type.IsAssignableFrom (type) && + (bestMatch == null || elem.TypeData.Type.IsAssignableFrom (bestMatch.TypeData.Type))) + bestMatch = elem; + } + return bestMatch; } return null; } -- 2.11.4.GIT