Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Альтернатива Enum.IsDefined / 2 сообщений из 2, страница 1 из 1
07.03.2004, 17:39
    #32433735
judge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива Enum.IsDefined
А есть ли альтернатива Enum.IsDefined ?

Этот метод достаночно медленный, так как использует reflection и т.п.

Как быстрее всего проверить, что значение входит в enum?
При условии, что значения в enum идут не по-порядку.


Спасибо, Alex
...
Рейтинг: 0 / 0
09.03.2004, 00:22
    #32434012
vdimas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива Enum.IsDefined
в общем случае без рефлекшена - именно никак, только ручками.

т.е. для каждого конкретного enum проверять диапазоны

-------------------
(suck)

описываем:

public enum Sample { Diap1_begin, One=Diap1_begin, Two, Three, Diap2_end=Three, ... }

и потом проверяем

------------------
(good)

если же таких энумераций много и все в процессе девелопмента, то можно накатать класс-хелпер и пользоваться IsDefined(Type enumType, object value) этого класса-хелпера.

при этом, если интересующего enum еще не было (не лежит во внутренней хещ-таблицы), то регистрировать интересующий enums (именно с помощью reflection одноразово), разбивать значения этого enum на диапазоны для последующей проверки.


плюсы указанного способа:

typeof(тип) - самая мгновенная операция, т.к. ссылка на описатель - это первый член каждого Object.

ввиду того, что рефлекшн используется лишь одноразово - вполне подходящая схема

заранее никакие enum регистрировать в классе хелпере не надо... регистрирование происходит по мере надобности.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Альтернатива Enum.IsDefined / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]