From 3c0b48576f617dd67653f89068fcf7e524c8fc97 Mon Sep 17 00:00:00 2001 From: Michael Ganss Date: Fri, 20 Nov 2020 12:42:21 +0100 Subject: [PATCH] Fix #237 --- XmlSchemaClassGenerator/TypeModel.cs | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/XmlSchemaClassGenerator/TypeModel.cs b/XmlSchemaClassGenerator/TypeModel.cs index f44431db..67ca38fb 100644 --- a/XmlSchemaClassGenerator/TypeModel.cs +++ b/XmlSchemaClassGenerator/TypeModel.cs @@ -372,21 +372,29 @@ public override CodeTypeDeclaration Generate() member.Name += " { get; set; }"; } - var docs = new[] { new DocumentationModel { Language = "en", Text = "Gets or sets the text value." }, + var docs = new List { new DocumentationModel { Language = "en", Text = "Gets or sets the text value." }, new DocumentationModel { Language = "de", Text = "Ruft den Text ab oder legt diesen fest." } }; - member.Comments.AddRange(DocumentationModel.GetComments(docs).ToArray()); var attribute = new CodeAttributeDeclaration(new CodeTypeReference(typeof(XmlTextAttribute), Configuration.CodeTypeReferenceOptions)); - if (BaseClass is SimpleModel simpleModel && (simpleModel.XmlSchemaType.Datatype.IsDataTypeAttributeAllowed() ?? simpleModel.UseDataTypeAttribute)) + + if (BaseClass is SimpleModel simpleModel) { - var name = BaseClass.GetQualifiedName(); - if (name.Namespace == XmlSchema.Namespace) + docs.AddRange(simpleModel.Restrictions.Select(r => new DocumentationModel { Language = "en", Text = r.Description })); + member.CustomAttributes.AddRange(simpleModel.GetRestrictionAttributes().ToArray()); + + if (simpleModel.XmlSchemaType.Datatype.IsDataTypeAttributeAllowed() ?? simpleModel.UseDataTypeAttribute) { - var dataType = new CodeAttributeArgument("DataType", new CodePrimitiveExpression(name.Name)); - attribute.Arguments.Add(dataType); + var name = BaseClass.GetQualifiedName(); + if (name.Namespace == XmlSchema.Namespace) + { + var dataType = new CodeAttributeArgument("DataType", new CodePrimitiveExpression(name.Name)); + attribute.Arguments.Add(dataType); + } } } + member.Comments.AddRange(DocumentationModel.GetComments(docs).ToArray()); + member.CustomAttributes.Add(attribute); classDeclaration.Members.Add(member); @@ -551,7 +559,7 @@ public ReferenceTypeModel(GeneratorConfiguration configuration) public List Properties { get; set; } public List Interfaces { get; } - + public void AddInterfaces(IEnumerable interfaces) { foreach (var interfaceModel in interfaces) @@ -559,7 +567,7 @@ public void AddInterfaces(IEnumerable interfaces) Interfaces.Add(interfaceModel); interfaceModel.DerivedTypes.Add(this); } - + } }