Я не думал, что вы могли бы наследовать от типов системы.
Помните, что метод расширения может быть только процедурой Sub или процедурой Function. Вы не можете определить свойство расширения, поле или событие.
Ваши варианты:
- Метод расширения (может быть только функцией или подпрограммой)
- Пользовательская структура (используйте Reflector, чтобы создать свой собственный Char)
- Класс, который принимает System.Char, является входным и позволяет вам хранить Char и ваше дополнительное свойство. Вам нужно будет реализовать свой собственный
IsLetter
и т. П.
Быстрый и грязный пример (вы можете сделать это Static
, поместив вместо него Module
):
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