Альтернатива char enum

У меня есть база данных, в которой нужно обновить столбец статуса до одного символьного кода статуса («E» или «U»).

Я хотел бы использовать перечисление для обновления этого поля через свой API, чтобы гарантировать правильное ограничение возможных значений. Очевидно, что перечисления не могут иметь тип char. Какой может быть хороший альтернативный метод?

И нет, я не могу изменить схему базы данных :)


person fearofawhackplanet    schedule 28.07.2010    source источник
comment
Похоже на stackoverflow.com/questions/1180174/ - надеюсь, это вам поможет.   -  person Chris    schedule 28.07.2010


Ответы (2)


Вы можете назначать символы членам перечисления.

Помогает ли это:

enum Status
{
 Empty = 'E',
 Updated = 'U'
}
void Main()
{
 Status status = Status.Empty;
 Console.WriteLine("{0}: {1}", status, (char)status);
}
person Will Dean    schedule 28.07.2010
comment
Интересно, я не понимал, что компилятор позволяет это :) Спасибо - person leppie; 28.07.2010
comment
Я тоже ... Преимущества Linqpad! - person Will Dean; 28.07.2010
comment
Я видел эту настройку раньше, мне она кажется немного взломанной и на самом деле не обеспечивает целостности данных (вы должны помнить приведение). Я мог бы использовать его, если нет ничего лучше. - person fearofawhackplanet; 28.07.2010
comment
Если вы забудете приведение типов, не будет ли ваш уровень данных жаловаться на попытки присвоить неправильный тип этому столбцу / полю? - person Will Dean; 28.07.2010
comment
На данный момент это просто вызов хранимой процедуры. Разве он не вставил бы просто символ «0» или «1»? Я вообще-то не знаю. - person fearofawhackplanet; 28.07.2010
comment
Я, конечно, не думаю, что это будет 0 или 1 - эти значения нигде не появляются в перечислении. Я полагаю, вы можете получить 69 или 85 каким-то образом, чего вы не хотите. - person Will Dean; 28.07.2010

byte - если у вас char

ushort - если у вас nchar

Оба могут быть преобразованы в базовое целое число, а затем преобразованы в char (C #).

person leppie    schedule 28.07.2010