В дополнение к тому, что сказал @Jason, посмотрите на this , где none конструктора принимает байт как параметр для проверки диапазона.
Сказав это, вы можете использовать this , если вы все еще хотите сравнить его с байтом. В этом случае это может выглядеть как
[RangeValidator(typeof(Byte), "0", RangeBoundaryType.Inclusive, "20", RangeBoundaryType.Inclusive)]
Обратите внимание, что строка выше написана на основе того, что я мог видеть и интерпретировать в документации. Я не написал код для проверки, если это работает.
Это просто, чтобы дать вам представление о том, как все может работать.
РЕДАКТИРОВАТЬ: альтернативой может быть изменение типа свойства с байта на int.