Using version 5.8 and “Update Service Stack Reference” in Visual Studio.
The enum is specified below:
public enum AuditRecordType
{
[EnumMember(Value="No ne")] None = 0,
[EnumMember(Value="Template")] Template = 1,
}
The output in generated dtos looks like:
export enum AuditRecordType
{
None = 'No ne',
Template = 1,
}
I would have expected every enum in the generated dto to be the specified EnumMember(Value=""). The generated dto enum is only a string if the EnumMember(Value="") contains a space like the “No ne” example.
How do I get this working?
Thanks
mythz
January 31, 2020, 8:29pm
2
You must some custom enum configuration defaulting to int enums as this is what it generates by default:
export enum EnumMemberTest
{
None = 'No ne',
Template = 'Template',
}
Found the problem. I have a sample project using the ServiceStack Angular 8 template if you need it.
If you have an enum where the enum values are not sequential the enum serialisation is mangled.
Example 1 - this is broken (see “Rule” where the assignment skips the sequence):
Source:
public enum AuditRecordType
{
[EnumMember(Value = "No ne")] None = 0,
[EnumMember(Value = "Template")] Template = 1,
[EnumMember(Value = "Rule")] Rule = 3,
}
DTO:
export enum AuditRecordType
{
None = 'No ne',
Template = 1,
Rule = 3,
}
Example 2 - this works fine:
Source:
public enum AuditRecordType
{
[EnumMember(Value = "No ne")] None = 0,
[EnumMember(Value = "Template")] Template = 1,
[EnumMember(Value = "Rule")] Rule = 2,
}
DTO:
export enum AuditRecordType
{
None = 'No ne',
Template = 'Template',
Rule = 'Rule',
}
mythz
February 4, 2020, 10:20pm
4
This should now be resolved from the latest v5.8.1 that’s now available on MyGet .
Thanks, it’s working as expected now.