我们在项目中使用自定义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,地面是有限的。
答案 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()>