2009-11-11 81 views
1

我們在我們的項目中使用了一個定製的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 constructor.Which傳遞意味着如果我們改變枚舉然後我們不必更新聲明

這個問題可能很奇怪,我知道有更好的方法來做到這一點,但由於一些自定義的API,地面是有限的。

回答

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()>