Наследовать от типов данных - PullRequest
1 голос
/ 31 мая 2011

Как создать класс, который наследуется от типа данных, в частности от типа данных Char?Я просто не хочу добавлять к нему одно свойство.Если это невозможно, есть ли другие способы сделать это?

Ответы [ 2 ]

2 голосов
/ 31 мая 2011

Я не думал, что вы могли бы наследовать от типов системы.

Помните, что метод расширения может быть только процедурой 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
2 голосов
/ 31 мая 2011

Получение от System.Char было бы безумием и бесполезным усилием. Методы расширения на помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...