Fixed a csharp client generator bug. The csharp client generator now outputs a constructor for types that allows setting property/fields. Bumped package version to 1.5.7

This commit is contained in:
2023-05-29 06:47:52 -07:00
parent 755a2399e4
commit a630f0e334
5 changed files with 104 additions and 16 deletions

View File

@@ -17,7 +17,7 @@
<AssemblyName>MontoyaTech.Rest.Net</AssemblyName>
<RootNamespace>MontoyaTech.Rest.Net</RootNamespace>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
<Version>1.5.6</Version>
<Version>1.5.7</Version>
<PackageReleaseNotes></PackageReleaseNotes>
<PackageIcon>Logo_Symbol_Black_Outline.png</PackageIcon>
</PropertyGroup>

View File

@@ -236,6 +236,27 @@ namespace MontoyaTech.Rest.Net
writer.WriteLine($"this.{property.Name} = instance.{property.Name};");
writer.Outdent().WriteLine('}');
//Generate a constructor to set all the fields/properties with optional default values
writer.WriteBreak();
writer.Write($"public {(newName != null ? newName.Name : type.Name)}(");
foreach (var field in fields)
writer.WriteSeparator().Write($"{this.GetTypeFullyResolvedName(field.FieldType)} {field.Name} = {this.GetTypeDefaultValue(field.FieldType)}");
foreach (var property in properties)
writer.WriteSeparator().Write($"{this.GetTypeFullyResolvedName(property.PropertyType)} {property.Name} = {this.GetTypeDefaultValue(property.PropertyType)}");
writer.WriteLine(")");
writer.WriteLine('{').Indent();
foreach (var field in fields)
writer.WriteLine($"this.{field.Name} = {field.Name};");
foreach (var property in properties)
writer.WriteLine($"this.{property.Name} = {property.Name};");
writer.Outdent().WriteLine('}');
}
//Generate C# for any types that belong to this one.

View File

@@ -356,7 +356,7 @@ namespace MontoyaTech.Rest.Net
else if (typeCode == TypeCode.String || typeCode == TypeCode.Object)
return "null";
else if (typeCode == TypeCode.Char)
return "'\0'";
return "'\\0'";
else
return Activator.CreateInstance(type).ToString();
}