Skip to content

Commit df10d15

Browse files
author
Simon Stone
authored
feat(*): align with concerto-dotnet changes (#511)
1 parent 4999e75 commit df10d15

File tree

2 files changed

+69
-72
lines changed

2 files changed

+69
-72
lines changed

packages/concerto-tools/lib/codegen/fromcto/csharp/csharpvisitor.js

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)