From 75c07fd03215baadfab06d1192bbbcec26d44bbf Mon Sep 17 00:00:00 2001 From: Michael Ganss Date: Tue, 14 Aug 2018 17:01:13 +0200 Subject: [PATCH] Improved support for default values --- XmlSchemaClassGenerator/TypeModel.cs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/XmlSchemaClassGenerator/TypeModel.cs b/XmlSchemaClassGenerator/TypeModel.cs index 5417e790..8a2c5ac9 100644 --- a/XmlSchemaClassGenerator/TypeModel.cs +++ b/XmlSchemaClassGenerator/TypeModel.cs @@ -222,6 +222,19 @@ public IEnumerable AllBaseClasses } } + public IEnumerable AllBaseTypes + { + get + { + var baseType = BaseClass; + while (baseType != null) + { + yield return baseType; + baseType = (baseType as ClassModel)?.BaseClass; + } + } + } + public override CodeTypeDeclaration Generate() { var classDeclaration = base.Generate(); @@ -399,13 +412,15 @@ public List GetAllDerivedTypes() public override CodeExpression GetDefaultValueFor(string defaultString) { - if (BaseClass is SimpleModel) + var rootClass = AllBaseTypes.LastOrDefault(); + + if (rootClass is SimpleModel) { string reference, val; using (var writer = new System.IO.StringWriter()) { - CSharpProvider.GenerateCodeFromExpression(BaseClass.GetDefaultValueFor(defaultString), writer, new CodeGeneratorOptions()); + CSharpProvider.GenerateCodeFromExpression(rootClass.GetDefaultValueFor(defaultString), writer, new CodeGeneratorOptions()); val = writer.ToString(); }