变量声明中所需的常量值

时间:2009-11-11 16:53:16

标签: .net vb.net enums attributes

我们在项目中使用自定义API,为类字段/成员提供属性,让界面显示一些范围值的弹出窗口,如“On / OFF”,并将选择的相应值传递给我们的代码。该属性需要一个字符串数组来知道这些值。

我们为这些范围定义了许多枚举,我们正在考虑使用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 :(得分:0)

正如你所说,即使你可以,也有更好的方法来做到这一点。

这里的问题是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()>