Enum with EnumMember not generated correctly

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

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',
}

This should now be resolved from the latest v5.8.1 that’s now available on MyGet.

Thanks, it’s working as expected now.