public static class TypeUtilities { public static List GetAllPublicConstantValues(this Type type) { return type .GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy) .Where(fi => fi.IsLiteral && !fi.IsInitOnly && fi.FieldType == typeof(T)) .Select(x => (T)x.GetRawConstantValue()) .ToList(); } }