Skip to content

Support for a default enum value? #508

@ChapterSevenSeeds

Description

@ChapterSevenSeeds

@ardalis, I am wondering what your thoughts are regarding the idea of having the option of specifying a default enum value for a class inheriting from SmartEnum.

For example, let's say I have the following enum:

public class Status : SmartEnum<Status> 
{
    public static readonly Status Other = new(nameof(Pending), 0);
    public static readonly Status Pending = new(nameof(Pending), 1);
    public static readonly Status Completed = new(nameof(Completed), 2);

    private Status(string name, int value) : base(name, value) { }
}

Then, if I were to do this:

var status = Status.FromName("Cancelled");

An exception gets thrown. Instead, I would prefer to have the Other status returned if an unknown is specified in the FromName method. How would you recommend solving this? Would there be any benefit to adding a new constructor to SmartEnum that allows an enum to specify whether it is to be used as a default value?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions