Да, вы можете использовать перечисление:
public enum Height
{
Short = 0,
Tall = 1;
}
public class Meta
{
public Height Height { get; private set; }
public Meta(Height height)
{
if (!Enum.IsDefined(typeof(Height), height))
{
throw new ArgumentOutOfRangeException("No such height");
}
this.Height = height;
}
}
(Если вы хотите, чтобы свойство было доступно для записи, вы должны поместить проверку в установщик.)
Вам нужна проверка, потому что перечисления на самом деле представляют собой просто целочисленные значения другого типа. Например, без проверки это будет нормально:
new Meta((Height) 1000);
но это, очевидно, было бы бессмысленно для любых абонентов.