@@ -99,17 +99,6 @@ class CSharpVisitor {
9999
100100 const dotNetNamespace = this . getDotNetNamespace ( modelFile , namespacePrefix ) ;
101101 parameters . fileWriter . openFile ( modelFile . getNamespace ( ) + '.cs' ) ;
102- parameters . fileWriter . writeLine ( 0 , 'using System;' ) ;
103-
104- if ( parameters . useSystemTextJson ) {
105- parameters . fileWriter . writeLine ( 0 , 'using System.Text.Json.Serialization;' ) ;
106- parameters . fileWriter . writeLine ( 0 , 'using Concerto.Serialization;' ) ;
107- }
108-
109- if ( parameters . useNewtonsoftJson ) {
110- parameters . fileWriter . writeLine ( 0 , 'using NewtonsoftJson = Newtonsoft.Json;' ) ;
111- parameters . fileWriter . writeLine ( 0 , 'using NewtonsoftConcerto = Concerto.Serialization.Newtonsoft;' ) ;
112- }
113102
114103 parameters . fileWriter . writeLine ( 0 , `namespace ${ dotNetNamespace } {` ) ;
115104
@@ -152,6 +141,12 @@ class CSharpVisitor {
152141 parameters . useSystemTextJson = true ;
153142 }
154143
144+ if ( parameters . useSystemTextJson ) {
145+ parameters . fileWriter . writeLine ( 1 , '[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))]' ) ;
146+ }
147+ if ( parameters . useNewtonsoftJson ) {
148+ parameters . fileWriter . writeLine ( 1 , '[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]' ) ;
149+ }
155150 parameters . fileWriter . writeLine ( 1 , 'public enum ' + enumDeclaration . getName ( ) + ' {' ) ;
156151
157152 enumDeclaration . getOwnProperties ( ) . forEach ( ( property ) => {
@@ -191,8 +186,11 @@ class CSharpVisitor {
191186 parameters . fileWriter . writeLine ( 1 , `[AccordProject.Concerto.Type(Namespace = "${ namespace } ", Version = ${ version ? `"${ version } "` : 'null' } , Name = "${ name } ")]` ) ;
192187
193188 // classDeclaration has any other subtypes
194- if ( classDeclaration . getAssignableClassDeclarations ( ) ?. length > 1 && parameters . useNewtonsoftJson ) {
195- parameters . fileWriter . writeLine ( 1 , '[NewtonsoftJson.JsonConverter(typeof(NewtonsoftConcerto.ConcertoConverter))]' ) ;
189+ if ( parameters . useSystemTextJson ) {
190+ parameters . fileWriter . writeLine ( 1 , '[System.Text.Json.Serialization.JsonConverter(typeof(AccordProject.Concerto.ConcertoConverterFactorySystem))]' ) ;
191+ }
192+ if ( parameters . useNewtonsoftJson ) {
193+ parameters . fileWriter . writeLine ( 1 , '[Newtonsoft.Json.JsonConverter(typeof(AccordProject.Concerto.ConcertoConverterNewtonsoft))]' ) ;
196194 }
197195 parameters . fileWriter . writeLine ( 1 , `public ${ abstract } class ${ classDeclaration . getName ( ) } ${ superType } {` ) ;
198196 const override = namespace === 'concerto' && name === 'Concept' ? 'virtual' : 'override' ;
@@ -305,10 +303,10 @@ class CSharpVisitor {
305303
306304 if ( modifiedPropertyName !== propertyName ) {
307305 if ( parameters ?. useSystemTextJson ) {
308- annotations += `[JsonPropertyName("${ propertyName } ")]\n\t\t` ;
306+ annotations += `[System.Text.Json.Serialization. JsonPropertyName("${ propertyName } ")]\n\t\t` ;
309307 }
310308 if ( parameters ?. useNewtonsoftJson ) {
311- annotations += `[NewtonsoftJson .JsonProperty("${ propertyName } ")]\n\t\t` ;
309+ annotations += `[Newtonsoft.Json .JsonProperty("${ propertyName } ")]\n\t\t` ;
312310 }
313311 }
314312
@@ -325,7 +323,7 @@ class CSharpVisitor {
325323 toCSharpType ( type ) {
326324 switch ( type ) {
327325 case 'DateTime' :
328- return 'DateTime' ;
326+ return 'System. DateTime' ;
329327 case 'Boolean' :
330328 return 'bool' ;
331329 case 'String' :
0 commit comments