X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.XML%2FSystem.Xml.Serialization%2FXmlTypeMapping.cs;h=533953b67f2fbf8936bc680ec94d7fd4a187cefc;hb=f0d2ee46f839cc3cebcdaa674b3a31d9a3e22863;hp=4a690af482afe7f34b5d7dbb6f32a9ceef173644;hpb=3f3ef7225cbabdae584723e5d77974d2e1c67d6c;p=mono.git diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs index 4a690af482a..533953b67f2 100644 --- a/mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs +++ b/mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs @@ -49,6 +49,7 @@ namespace System.Xml.Serialization string documentation; bool includeInSchema; bool isNullable = true; + bool isAny; ArrayList _derivedTypes = new ArrayList(); @@ -158,6 +159,12 @@ namespace System.Xml.Serialization set { isNullable = value; } } + internal bool IsAny + { + get { return isAny; } + set { isAny = value; } + } + internal XmlTypeMapping GetRealTypeMap (Type objectType) { if (TypeData.SchemaType == SchemaTypes.Enum) @@ -205,6 +212,13 @@ namespace System.Xml.Serialization XmlSchemaProviderAttribute schemaProvider = (XmlSchemaProviderAttribute) Attribute.GetCustomAttribute (typeData.Type, typeof (XmlSchemaProviderAttribute)); if (schemaProvider != null) { + _schemaTypeName = XmlQualifiedName.Empty; + + if (schemaProvider.IsAny) { + IsAny = true; + return; + } + string method = schemaProvider.MethodName; MethodInfo mi = typeData.Type.GetMethod (method, BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy); if (mi == null) @@ -216,7 +230,6 @@ namespace System.Xml.Serialization throw new InvalidOperationException (String.Format ("Method '{0}' indicated by XmlSchemaProviderAttribute must have its return type as XmlQualifiedName", method)); XmlSchemaSet xs = new XmlSchemaSet (); object retVal = mi.Invoke (null, new object [] { xs }); - _schemaTypeName = XmlQualifiedName.Empty; if (retVal == null) return;