Skip to content

Commit 22f0f61

Browse files
committed
UUID in C#
1 parent 61cc926 commit 22f0f61

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

src/quicktype-core/language/CSharp.ts

+18-2
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ function csTypeForTransformedStringType(t: PrimitiveType): Sourcelike {
9797
if (t.kind === "date-time") {
9898
return "DateTimeOffset";
9999
}
100+
if (t.kind === "uuid") {
101+
return "Guid";
102+
}
100103
return panic(`Transformed string type ${t.kind} not supported`);
101104
}
102105

@@ -139,6 +142,7 @@ export class CSharpTargetLanguage extends TargetLanguage {
139142
mapping.set("date", "date-time");
140143
mapping.set("time", "date-time");
141144
mapping.set("date-time", "date-time");
145+
mapping.set("uuid", "uuid");
142146
mapping.set("integer-string", "integer-string");
143147
mapping.set("bool-string", "bool-string");
144148
return mapping;
@@ -204,7 +208,7 @@ function isValueType(t: Type): boolean {
204208
if (t instanceof UnionType) {
205209
return nullableFromUnion(t) === null;
206210
}
207-
return ["integer", "double", "bool", "enum", "date-time"].indexOf(t.kind) >= 0;
211+
return ["integer", "double", "bool", "enum", "date-time", "uuid"].indexOf(t.kind) >= 0;
208212
}
209213

210214
export class CSharpRenderer extends ConvenienceRenderer {
@@ -217,7 +221,7 @@ export class CSharpRenderer extends ConvenienceRenderer {
217221
}
218222

219223
protected forbiddenNamesForGlobalNamespace(): string[] {
220-
return ["QuickType", "Type", "System", "Console", "Exception", "DateTimeOffset"];
224+
return ["QuickType", "Type", "System", "Console", "Exception", "DateTimeOffset", "Guid"];
221225
}
222226

223227
protected forbiddenForObjectProperties(_: ClassType, classNamed: Name): ForbiddenWordsInfo {
@@ -1140,6 +1144,11 @@ export class NewtonsoftCSharpRenderer extends CSharpRenderer {
11401144
this.emitLine("if (DateTimeOffset.TryParse(", variable, ", out dt))");
11411145
this.emitBlock(() => this.emitConsume("dt", xfer.consumer, targetType, emitFinish));
11421146
break;
1147+
case "uuid":
1148+
this.emitLine("Guid guid;");
1149+
this.emitLine("if (Guid.TryParse(", variable, ", out guid))");
1150+
this.emitBlock(() => this.emitConsume("guid", xfer.consumer, targetType, emitFinish));
1151+
break;
11431152
case "integer":
11441153
this.emitLine("long l;");
11451154
this.emitLine("if (Int64.TryParse(", variable, ", out l))");
@@ -1162,6 +1171,13 @@ export class NewtonsoftCSharpRenderer extends CSharpRenderer {
11621171
targetType,
11631172
emitFinish
11641173
);
1174+
case "uuid":
1175+
return this.emitConsume(
1176+
[variable, '.ToString("D", System.Globalization.CultureInfo.InvariantCulture)'],
1177+
xfer.consumer,
1178+
targetType,
1179+
emitFinish
1180+
);
11651181
case "integer":
11661182
return this.emitConsume([variable, ".ToString()"], xfer.consumer, targetType, emitFinish);
11671183
case "bool":

0 commit comments

Comments
 (0)