Code/SmartEnumExample.cs
using Sandbox;
namespace SmarterEnum;
public class SmartEnumExample : SmartEnum<SmartEnumExample>
{
[SkipHotload] // this is required
public static readonly SmartEnumExample A = new("It's is A", nameof(A), 0);
[SkipHotload] // this is required
public static readonly SmartEnumExampleB B = new(nameof(B), 1);
public string Info { get; set; }
protected SmartEnumExample(string info, string name, int value) : base(name, value)
{
Info = info;
}
public static void UsingExamples()
{
var allValues = SmartEnumExample.Values;
var bValue = SmartEnumExample.B.Value;
var aName = SmartEnumExample.A.Name;
SmartEnumExample.TryFromName("B", out var foundB); // out SmartEnumExample.B
SmartEnumExample.TryFromValue(0, out var foundA); // out SmartEnumExample.A
SmartEnumExample.IsDefined(new SmartEnumExampleB(string.Empty, 420)); // false
SmartEnum.IsSmartEnum(typeof(SmartEnumExampleB)); // true
}
}
public class SmartEnumExampleB : SmartEnumExample
{
public SmartEnumExampleB(string name, int value) : base("It's is B", name, value)
{
}
}