2011-05-30 5 views
1

Comment créer une classe qui hérite d'un type de données, en particulier du type de données Char? Je voulais juste ajouter une propriété. Si ce n'est pas possible, existe-t-il d'autres moyens d'y parvenir?Hériter des types de données

Répondre

2

Je ne pensais pas que vous pourriez hériter des types de systèmes. Rappelez-vous qu'une méthode d'extension peut être uniquement une procédure Sub ou une procédure Function. Vous ne pouvez pas définir une propriété, un champ ou un événement d'extension.

Vos options:

  • méthode d'extension (ne peut être une fonction ou sous)
  • Une structure personnalisée (utilisation réflecteur pour faire votre propre coutume Char)
  • Une classe qui prend System.Char est entrée et vous permet de stocker le Char et votre propriété supplémentaire. Vous aurez besoin de mettre en œuvre votre propre IsLetter et similaires.

exemple rapide et sale (vous pouvez faire ce Static en le plaçant dans un lieu 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

Dériver de System.Char serait une folie et un effort inutile. Extension methods à la rescousse.

+0

Ceci est également disponible pour Visual Basic? – Cobold

+0

@Cobold, bien sûr, j'ai mis à jour ma réponse pour pointer vers la partie VB.NET de la documentation. –

+0

Existe-t-il un moyen d'ajouter une propriété? On dirait que ce n'est pas autorisé. – Cobold

Questions connexes