System.Xml.Schema.Compiler.BuildParticleContentModel C# (CSharp) Méthode

BuildParticleContentModel() private méthode

private BuildParticleContentModel ( ParticleContentValidator contentValidator, XmlSchemaParticle particle ) : bool
contentValidator ParticleContentValidator
particle XmlSchemaParticle
Résultat bool
        private bool BuildParticleContentModel(ParticleContentValidator contentValidator, XmlSchemaParticle particle) {
            bool hasWildCard = false;
            if (particle is XmlSchemaElement) {
                XmlSchemaElement element = (XmlSchemaElement)particle;
                contentValidator.AddName(element.QualifiedName, element);       
             }
            else if (particle is XmlSchemaAny) {
                hasWildCard = true;
                XmlSchemaAny any = (XmlSchemaAny)particle;
                contentValidator.AddNamespaceList(any.NamespaceList, any);
            }
            else if (particle is XmlSchemaGroupBase) {
                XmlSchemaObjectCollection particles = ((XmlSchemaGroupBase)particle).Items;
                bool isChoice = particle is XmlSchemaChoice;
                contentValidator.OpenGroup();
                bool first = true;
                foreach (XmlSchemaParticle p in particles) {
                    Debug.Assert(!p.IsEmpty);
                    if (first) {
                        first = false;
                    }
                    else if (isChoice) {
                        contentValidator.AddChoice();  
                    }
                    else {
                        contentValidator.AddSequence();
                    }
                    hasWildCard = BuildParticleContentModel(contentValidator, p);
                }
                contentValidator.CloseGroup();
            }
            else {
                Debug.Assert(false);
            }
            if (particle.MinOccurs == decimal.One && particle.MaxOccurs == decimal.One) {
                // nothing
            }
            else if (particle.MinOccurs == decimal.Zero && particle.MaxOccurs == decimal.One) {
                contentValidator.AddQMark();
            }
            else if (particle.MinOccurs == decimal.Zero && particle.MaxOccurs == decimal.MaxValue) {
                contentValidator.AddStar();
            }
            else if (particle.MinOccurs == decimal.One && particle.MaxOccurs == decimal.MaxValue) {
                contentValidator.AddPlus();
            }
            else {
                contentValidator.AddLeafRange(particle.MinOccurs, particle.MaxOccurs);
            }
            return hasWildCard;
        }
Compiler