Постоянные значения, требуемые в переменном выражении - PullRequest
1 голос
/ 11 ноября 2009

В нашем проекте мы используем пользовательский API, который предоставляет атрибут для полей / членов класса, который позволяет интерфейсу представлять всплывающее окно некоторых значений диапазона, таких как «Вкл / Выкл», и передавать соответствующие значения выбора в наш код , Атрибут требует строковый массив, чтобы знать эти значения.

У нас есть много перечислений, определенных для этих диапазонов. Мы думаем использовать метод вида Enum.GetValues ​​() для получения строкового массива для этого метода.

Однако, как мы знаем, объявление поля не разрешает динамические значения в объявлении? так же есть ли другие эффективные способы сделать то же самое. Чтобы прояснить проблему, я напишу примеры ниже;

Текущая рабочая

<RangeLookUp("On:1","Off:2")> Public ASimpleRangeVariable As Integer

Пока я хотел сделать вот так или вроде

<RangeLookUp(SomeMethod())> Public ASimpleRangeVariable As Integer
 Public Shared Function SomeMethod() as String() 
    'use Enum to get all the items as string values forexample Enum.GetValues & enu,.GetValues 
    'Return array of string
 End Function 

Где SomeMethod предполагает возвращение строкового массива для передачи в конструкторе RangeLookup. Что означает, что если мы изменим перечисление, нам не нужно обновлять объявление

Этот вопрос может быть странным, и я знаю, что есть лучшие способы сделать это, но из-за некоторого пользовательского API, основание ограничено.

1 Ответ

0 голосов
/ 09 августа 2010

Как вы говорите, даже если вы можете, есть лучшие способы сделать это.

Проблема здесь в том, что SomeMethod() может быть любым методом, поэтому программисту не намекают, какие значения допустимы или доступны.

Лучшее решение может быть:

'Using the same attribute, but setting a enum of allowed enums
<RangeLookUp(Ranges.OnOff)> 

или

'Using different attribute names, and let the attribute inherits from other
<RangeLookUp_OnOff()> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...