From 282893b9aff613039b457182965f707bef930a62 Mon Sep 17 00:00:00 2001 From: Michael Ganss Date: Thu, 28 Mar 2019 17:12:45 +0100 Subject: [PATCH] Improve support for groups (fix #109) --- XmlSchemaClassGenerator/ModelBuilder.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/XmlSchemaClassGenerator/ModelBuilder.cs b/XmlSchemaClassGenerator/ModelBuilder.cs index cd1c8fd2..4be64d4c 100644 --- a/XmlSchemaClassGenerator/ModelBuilder.cs +++ b/XmlSchemaClassGenerator/ModelBuilder.cs @@ -245,7 +245,7 @@ private TypeModel CreateTypeModel(Uri source, XmlSchemaComplexType complexType, // If it's a restriction, do not duplicate elements on the derived class, they're already in the base class. // See https://msdn.microsoft.com/en-us/library/f3z3wh0y.aspx } - else particle = complexType.ContentTypeParticle; + else particle = complexType.Particle ?? complexType.ContentTypeParticle; var items = GetElements(particle, complexType); var properties = CreatePropertiesForElements(source, classModel, particle, items); @@ -479,6 +479,7 @@ private IEnumerable CreatePropertiesForElements(Uri source, TypeM { var properties = new List(); var order = 0; + foreach (var item in items) { PropertyModel property = null; @@ -495,7 +496,8 @@ private IEnumerable CreatePropertiesForElements(Uri source, TypeM if (elementQualifiedName.IsEmpty) { // inner type, have to generate a type name - var typeName = _configuration.NamingProvider.PropertyNameFromElement(typeModel.Name, element.QualifiedName.Name); + var typeModelName = particle is XmlSchemaGroupRef groupRef ? groupRef.RefName : typeModel.XmlSchemaName; + var typeName = _configuration.NamingProvider.PropertyNameFromElement(typeModelName.Name, element.QualifiedName.Name); elementQualifiedName = new XmlQualifiedName(typeName, typeModel.XmlSchemaName.Namespace); // try to avoid name clashes if (NameExists(elementQualifiedName))