System.Xml.Serialization.XmlSchemaImporter.ImportAnyType C# (CSharp) Method

ImportAnyType() public method

public ImportAnyType ( XmlQualifiedName typeName, string elementName ) : XmlMembersMapping
typeName System.Xml.XmlQualifiedName
elementName string
return XmlMembersMapping
        public XmlMembersMapping ImportAnyType(XmlQualifiedName typeName, string elementName)
        {
            TypeMapping typeMapping = ImportType(typeName, typeof(MembersMapping), null, TypeFlags.CanBeElementValue, true);
            MembersMapping mapping = typeMapping as MembersMapping;

            if (mapping == null)
            {
                XmlSchemaComplexType type = new XmlSchemaComplexType();
                XmlSchemaSequence seq = new XmlSchemaSequence();
                type.Particle = seq;
                XmlSchemaElement element = new XmlSchemaElement();
                element.Name = elementName;
                element.SchemaTypeName = typeName;
                seq.Items.Add(element);
                mapping = ImportMembersType(type, typeName.Namespace, elementName);
            }

            if (mapping.Members.Length != 1 || !mapping.Members[0].Accessor.Any)
                return null;
            mapping.Members[0].Name = elementName;
            ElementAccessor accessor = new ElementAccessor();
            accessor.Name = elementName;
            accessor.Namespace = typeName.Namespace;
            accessor.Mapping = mapping;
            accessor.Any = true;

            XmlSchemaObject xso = Schemas.SchemaSet.GlobalTypes[typeName];
            if (xso != null)
            {
                XmlSchema schema = xso.Parent as XmlSchema;
                if (schema != null)
                {
                    accessor.Form = schema.ElementFormDefault == XmlSchemaForm.None ? XmlSchemaForm.Unqualified : schema.ElementFormDefault;
                }
            }
            XmlMembersMapping members = new XmlMembersMapping(Scope, accessor, XmlMappingAccess.Read | XmlMappingAccess.Write);
            return members;
        }