Проверьте, находится ли значение в диапазоне Enum без использования IsDefinedC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Проверьте, находится ли значение в диапазоне Enum без использования IsDefined

Сообщение Anonymous »

Есть еще несколько вопросов о том, как конвертировать Enums и что произойдет, если анализируемое значение выходит за пределы диапазона, например:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проверьте, находится ли значение в диапазоне [дублировать]
    Anonymous » » в форуме Php
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Проверьте, находится ли IP в диапазоне CIDR в Python
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Как создать член ENUM в родительском классе ENUM? Для методов класса, ссылающихся на значение по умолчанию
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как создать член ENUM в родительском классе ENUM? Для методов класса, ссылающихся на значение по умолчанию
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Проверьте, есть ли значение в диапазоне
    Anonymous » » в форуме Php
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»