var test = 0.ToEnum<Test>();
var test2 = 1.ToEnum<Test2>();
Console.WriteLine($"Type:{test.GetType()} Value:{test}");
Console.WriteLine($"Type:{test2.GetType()} Value:{test2}");
public static class TestExtensions
public static T ToEnum<T>(this int value) where T : struct, IConvertible
if (!typeof(T).IsEnum) throw new ArgumentException("T must be an enumerated type");
return (T)Enum.ToObject(typeof(T), value);