Imported Upstream version 6.6.0.97

Former-commit-id: 36b6262d38adef7275aee46c9258ae34f9e3fb39
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2019-09-25 09:31:28 +00:00
parent 95fdb59ea6
commit 15bdb7a527
66 changed files with 244 additions and 355 deletions

View File

@@ -204,9 +204,11 @@ namespace System.Xml.Serialization
{
if (isNullable && ReadNull()) return null;
if (checkType) {
System.Xml.XmlQualifiedName t = GetXsiType();
if (t != null) {
if (checkType)
{
System.Xml.XmlQualifiedName t = GetXsiType();
if (t != null)
{
XmlTypeMapping realMap = typeMap.GetRealElementMap (t.Name, t.Namespace);
if (realMap == null) {
if (typeMap.TypeData.Type == typeof(object))
@@ -219,12 +221,7 @@ namespace System.Xml.Serialization
}
else if (typeMap.TypeData.Type == typeof(object))
return ReadTypedPrimitive (AnyType);
else {
XmlTypeMapping realMap = typeMap.GetRealElementMap (Reader.LocalName, Reader.NamespaceURI);
if (realMap != null && realMap != typeMap)
return ReadObject(realMap, false, false);
}
}
}
object ob = CreateInstance (typeMap.TypeData.Type, true);

View File

@@ -389,7 +389,7 @@ namespace System.Xml.Serialization
return (XmlTypeMapMemberAttribute)_attributeMembers [BuildKey (name,ns, -1)];
}
public XmlTypeMapElementInfo GetElement (string name, string ns, int minimalOrder)
public XmlTypeMapElementInfo GetElement(string name, string ns, int minimalOrder)
{
if (_elements == null)
return null;
@@ -404,38 +404,22 @@ namespace System.Xml.Serialization
selected = info;
}
}
else if (info.MappedType != null && info.MappedType.DerivedTypes.Count > 0) {
foreach (XmlTypeMapping derrivedInfo in info.MappedType.DerivedTypes) {
if (derrivedInfo.ElementName == name && derrivedInfo.Namespace == ns) {
if (info.ExplicitOrder < minimalOrder)
continue;
if (selected == null || selected.ExplicitOrder > info.ExplicitOrder) {
selected = info;
}
}
}
}
}
return selected;
}
public XmlTypeMapElementInfo GetElement (string name, string ns)
public XmlTypeMapElementInfo GetElement(string name, string ns)
{
if (_elements == null) return null;
foreach (XmlTypeMapElementInfo info in _elements.Values)
if (info.ElementName == name && info.Namespace == ns)
return info;
else if (info.MappedType != null && info.MappedType.DerivedTypes.Count > 0) {
foreach (XmlTypeMapping derrivedInfo in info.MappedType.DerivedTypes)
if (derrivedInfo.ElementName == name && derrivedInfo.Namespace == ns)
return info;
}
return null;
}
public XmlTypeMapElementInfo GetElement (int index)
{
if (_elements == null) return null;