好吧我有一些問題,設計一個基類來處理仿製藥。警告我需要限制輸入的數字類型,特別是Int16,Int32或Int64(短或長)。VB.Net一般限制
我知道你可以做到Of T as {Structure}
,但我不希望允許非整數的類型。
有什麼建議嗎?
好吧我有一些問題,設計一個基類來處理仿製藥。警告我需要限制輸入的數字類型,特別是Int16,Int32或Int64(短或長)。VB.Net一般限制
我知道你可以做到Of T as {Structure}
,但我不希望允許非整數的類型。
有什麼建議嗎?
我能想到的最好的是做一個Friend
泛型類,並建立6個班從它繼承。 Friend
使該成員爲私有,除了包含的項目。這樣可以防止項目之外的任何事情以例如IntXClass(Of Double)
的形式立即實現。
Friend Class IntXClass(Of T As Structure)
' TODO: Define all IntXClass members.
End Class
Public Class Int16Class
Inherits IntXClass(Of Int16)
End Class
Public Class Int32Class
Inherits IntXClass(Of Int32)
End Class
Public Class Int64Class
Inherits IntXClass(Of Int64)
End Class
Public Class UInt16Class
Inherits IntXClass(Of UInt16)
End Class
Public Class UInt32Class
Inherits IntXClass(Of UInt32)
End Class
Public Class UInt64Class
Inherits IntXClass(Of UInt64)
End Class
的.Net真的有仿製藥在數字類型,有或無約束無有益的支持。 This library可能有助於它的實現方面,但是在定義約束條件方面你仍然運氣不佳。
如果你真的迫切希望限制它,你可以在靜態構造函數中檢查類型參數,如果不可接受,會導致TypeLoadException
任何人嘗試實例化不正確。
所以如何將我做一個比較? 如果我讓參數成爲'Type',然後像'param GetType(Int16)'那樣做什麼? 似乎有點兒奇怪,好像我通過帕拉姆爲'Object'然後我要做'typeof運算(param)將Int16'。 將對象與類型傳遞值的pro/con函數是什麼? – GoldBishop
是啊,想到這一點,但看起來有一個基類,需要一個整數,將分配一個大小的數組。我有幾個預設的派生類將繼承此基類,但也可以用作具有最終用戶可定製性的通用類。類似於SQL的Numeric(P,S)類型。所有其他數字類型實際上只不過是數字類型的變體。 – GoldBishop
我有點困惑。這是如何實現「1個基類,需要一個完整的正數來分配一個數組的大小」?這只是構造函數的一部分,不是嗎? –