Код: Выделить всё
public enum SomeTypes
{
SomeType1 = 1,
SomeType2 = 2,
SomeType3 = 3
}
public class SomeClass
{
...
var inRange = (SomeTypes) 1;
var outOfRange = (SomeTypes) 5;
...
}
Но я на собственном горьком опыте обнаружил, что если вы попытаетесь сериализовать-десериализовать перечисление с выходом -of-range вы получите странные ошибки. Например, я получал что-то вроде
"ошибка анализа сообщения или превышено время ожидания"
что заставило меня искать другие причины, кроме перечисления за пределами допустимого диапазона.
Предложения по устранению этой проблемы принадлежат средствами Enum.IsDefined. Кажется, это работает довольно хорошо, но на msdn есть довольно смелое предупреждение:
"Не используйте System.Enum.IsDefined(System .Type,System.Object) для проверки диапазона перечисления, поскольку он основан на типе перечисления во время выполнения, который может меняться от версии к версии."
Итак, мой вопрос в том, можем ли мы безопасно использовать Enum.IsDefined или как правильно проверить, выходит ли значение перечисления за пределы диапазона, без использования Enum.IsDefined?
Подробнее здесь: https://stackoverflow.com/questions/270 ... -isdefined