Ejemplo n.º 1
0
        public List <SchemaObject> GetDerivedTypes(string type)
        {
            if (string.IsNullOrEmpty(type) || type == "ANY")
            {
                return(this.ComplexTypes);
            }

            SchemaObject simpleComplexType = this.ComplexTypes.SingleOrDefault(y => y.Name.ToLower() == type.ToLower());

            if (simpleComplexType == null)
            {
                return(null);
            }

            XmlSchemaComplexType complexType  = simpleComplexType.XmlObject as XmlSchemaComplexType;
            List <SchemaObject>  derivedTypes = new List <SchemaObject>();

            complexType = this.Schema.SchemaTypes[complexType.QualifiedName] as XmlSchemaComplexType;

            foreach (XmlSchemaType globalType in this.Schema.SchemaTypes.Values)
            {
                if (XmlSchemaType.IsDerivedFrom(globalType, complexType, XmlSchemaDerivationMethod.None))
                {
                    string name = Helper.GetDataTypeName(this.Schema.TargetNamespace, globalType.Name);
                    derivedTypes.Add(this.ComplexTypes.Single(y => y.Name == name));
                }
            }

            return(derivedTypes);
        }