2011-01-20 66 views
1

VB.NET,.NET 4VB.NET數字類型只泛型?

您好所有,

假設我有叫IParseable(中TParsed,TUnparsed),這需要兩個功能的接口:

Function Parse(ByVal Value As TUnparsed) As TParsed 
Function Unparse(ByVal Value As TParsed) As TUnparsed 

有沒有一種方式,我可以將TParsed和TUnparsed限制爲數字類型(對於像「*」和「+」這樣的操作已經定義)?

的問題是,當我試圖實現我的接口和定義的功能之一,例如:

Public Function Parse(ByVal Value As TUnparsed) As TParsed Implements IParseable(Of TParsed, TUnparsed).Parse 
    Return CType(10 * Value, TParsed) 
End Function 

VS拋出一個錯誤說的「*」不是TUnparsed定義。我知道,既然TUnparsed可以是任何東西,但是有沒有辦法限制我的泛型,比如TUnparsed只能是Double,Integer,Long等?

我問這個,因爲我知道,你可以這樣做:

Function Blah(Of T As TextBox)(ByVal Control As T) As Object 

要需要控制是一個TextBox(或者也許我不明白,也生病....)。但是,無論如何,任何想法或我的方式偏離軌道?試圖弄清楚這些接口事物和泛型類型。

非常感謝提前, 布賴恩

回答

1

不幸的是,這是不可能的。

還有twoworkarounds

+0

ahhhhh ...非常感謝! – 2011-01-20 03:01:24

2

我只是想提(如果你想知道類似的東西),雖然SLaks是正確的關於算術,我也讀到了一種巧妙的方法一般限制在可比的值類型:

(效應的T As {Structure,IComparable})