2011-05-30 108 views
1

如何創建從數據類型,特別是從Char數據類型繼承的類?我只想添加一個屬性。如果這是不可能的,還有其他方法可以實現嗎?從數據類型繼承

回答

2

我不認爲你可以繼承系統類型。

記住一個擴展方法只能是一個Sub過程或一個Function過程。您不能定義擴展屬性,字段或事件。

您的選擇:

  • 擴展方法(只能是一個函數或子)
  • 自定義結構(使用反射來使自己的自定義字符)
  • 一類,它System.Char被輸入並允許你存儲Char和你的額外屬性。你將需要實現你自己的IsLetter等。

快速和骯髒的例子(您可能希望通過將其放置在一個Module,而不是使這個Static):

Class MyChar 

    Sub New() 
    End Sub 
    Sub New(byval input As System.Char) 
    Me.[Char] = input 
    End Sub 
    Sub New(byval input As String) 
    Me.Parse(input) 
    End Sub 

    Public Property [Char] As System.Char 
    Public Property ExtraProperty As String 

    Public ReadOnly Property IsLetter As Boolean 
    Get 
     return Me.[Char].IsLetter(Me.[Char]) 
    End Get 
    End Property 

    Public Function Parse(ByVal input As String) 
    If (input Is Nothing) Then 
     Throw New ArgumentNullException("input") 
    End If 
    If (input.Length <> 1) Then 
     Throw New FormatException("Need a single character only") 
    End If 
    Me.[Char] = input.Chars(0) 
    End Function 

End Class 
2

從System.Char派生將是瘋狂和無用的努力。 Extension methods來救援。

+0

這也可到Visual Basic? – Cobold 2011-05-30 21:04:37

+0

@Cobold,當然,我已經更新了我的答案,指向文檔的VB.NET部分。 – 2011-05-30 21:05:40

+0

有沒有辦法添加一個屬性?看起來不允許。 – Cobold 2011-05-30 21:13:32