}
else
{
- if (Reader.LocalName != rootMap.ElementName || Reader.NamespaceURI != rootMap.Namespace)
+ if (!rootMap.IsAny && (Reader.LocalName != rootMap.ElementName || Reader.NamespaceURI != rootMap.Namespace))
throw CreateUnknownNodeException();
return ReadObject (rootMap, rootMap.IsNullable, true);
void SetMemberValue (XmlTypeMapMember member, object ob, object value, bool isValueList)
{
+ var memberType = member.TypeData.Type;
+ if (value != null && !value.GetType().IsAssignableFrom (memberType))
+ value = XmlSerializationWriterInterpreter.ImplicitConvert (value, memberType);
+
if (isValueList)
((object[])ob)[member.GlobalIndex] = value;
else
Reader.MoveToContent ();
if (Reader.NodeType == XmlNodeType.Element)
{
- if (Reader.LocalName == typeMap.ElementName && Reader.NamespaceURI == typeMap.Namespace)
+ if (typeMap.IsAny || (Reader.LocalName == typeMap.ElementName && Reader.NamespaceURI == typeMap.Namespace))
{
object ob = CreateInstance (typeMap.TypeData.Type, true);
return ReadSerializable ((IXmlSerializable)ob);