My enum consists of the following values:
private enum PublishStatusses{
NotCompleted,
Completed,
Error
};
I want to be able to
I use a generic class to store the enum/description pairs and a nested helper class to get the description.
The enum:
enum Status { Success, Fail, Pending }
The generic class:
Note: Since a generic class cannot be constrained by an enum I am constraining by struct instead and checking for enum in the constructor.
public class EnumX where T : struct
{
public T Code { get; set; }
public string Description { get; set; }
public EnumX(T code, string desc)
{
if (!typeof(T).IsEnum) throw new NotImplementedException();
Code = code;
Description = desc;
}
public class Helper
{
private List> codes;
public Helper(List> codes)
{
this.codes = codes;
}
public string GetDescription(T code)
{
EnumX e = codes.Where(c => c.Code.Equals(code)).FirstOrDefault();
return e is null ? "Undefined" : e.Description;
}
}
}
Usage:
EnumX.Helper StatusCodes = new EnumX.Helper(new List>()
{
new EnumX(Status.Success,"Operation was successful"),
new EnumX(Status.Fail,"Operation failed"),
new EnumX(Status.Pending,"Operation not complete. Please wait...")
});
Console.WriteLine(StatusCodes.GetDescription(Status.Pending));