2010-06-03 4 views
0

J'essaie de créer une classe de paramètres. La propriété Test() est une liste de chaînes.Vb.net Custom Class Propriété en minuscules

Lorsque j'ajoute une chaîne telle que: t.test.Add ("asasasAAAAA") Je veux qu'elle mette automatiquement en minuscule.

Pour une raison quelconque, ce n'est pas le cas. Des idées?

p.s. en utilisant t.test.Add (("asasasAAAAA"). ToLower) ne fonctionnera pas pour ce dont j'ai besoin.

Merci.

Public Class Form1 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     Dim t As New Settings 
     t.test.Add("asasasAAAAA") 
     t.test.Add("aBBBBBAAAAA") 
     t.test.Add("CCCCCsasAAAAA") 
    End Sub 
End Class 

Public Class Settings 
    Private strtest As New List(Of String) 

    Public Property test() As List(Of String) 
     Get 
      Return strtest 
     End Get 
     Set(ByVal value As List(Of String)) 
      For i As Integer = 0 To value.Count - 1 
       value(i) = value(i).ToLower 
      Next 

      strtest = value 
     End Set 
    End Property 
End Class 

ashakjs

Répondre

0

Ce que vous essayez de faire et ce que vous faites ne correspondent pas. Pour faire ce que vous voulez, vous devez créer votre propre classe de collection étendant la collection générique - ou fournir une méthode personnalisée à votre classe de paramètres qui ajuste manuellement la chaîne fournie avant en l'ajoutant à la collection de chaînes locale (privée).

Pour un exemple de la deuxième option, retirer la propriété publique de la classe des paramètres qui expose la liste de chaînes et utiliser une méthode comme ce qui suit:


Public Sub Add(ByVal newProp As String) 
    strtest.Add(newProp.toLower()) 
End Sub 
+0

Merci beaucoup. – tcables

1

C'est la raison: accesseur ensemble de votre propriété est en réalité jamais appelé. lorsque vous utilisez t.test.Add("asasasAAAAA") vous appelez en réalité un accesseur get, qui renvoie une liste, après que cette chaîne spécifiée est ajoutée à cette liste, de sorte que la fonction .ToLower n'est jamais appelée. façon simple de résoudre ce problème:

Dim list as New List(Of String) 
list.Add("asasasAAAAA") 
list.Add("aBBBBBAAAAA") 
list.Add("CCCCCsasAAAAA") 
t.test = list 

Alternativement, vous pouvez mettre en œuvre votre propre liste de chaînes (moyen le plus facile - hériter de Collection (Of String)), qui convertit automatiquement toutes les chaînes ajouté en minuscules.

+0

Les deux réponses sont fondamentalement les mêmes ... mais celle que j'ai acceptée correspond un peu plus. Merci. – tcables

Questions connexes