从数据类型继承

时间:2011-05-30 21:01:53

标签: vb.net inheritance

如何创建一个继承自数据类型的类,特别是Char数据类型?我只是不想添加一个属性。如果不可能,还有其他方法可以实现吗?

2 个答案:

答案 0 :(得分:2)

从System.Char派生将是疯狂和无用的努力。 Extension methods救援。

答案 1 :(得分:2)

我认为你不能从系统类型继承。

请记住,扩展方法只能是Sub过程或Function过程。您无法定义扩展属性,字段或事件。

您的选择:

  • 扩展方法(只能是函数或子函数)
  • 自定义结构(使用Reflector制作自己的自定义字符)
  • 输入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