开发者

Vb.net Custom Class Property to lower case

I a开发者_JAVA百科m trying to create a settings class. The Property Test() is a list of strings.

When I add a string such as: t.test.Add("asasasAAAAA") I want it to autmatically turn lowercase.

For some reason it is not. Any Ideas?

p.s. using t.test.Add(("asasasAAAAA").ToLower) will not work for what I need.

Thank you.

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


That's the reason: set accessor of your property is actually never called. when you use t.test.Add("asasasAAAAA") you are actually calling a get accessor, which returns a list, after that specified string is added to this list, so .ToLower function is never called. Simple way to fix this:

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

Alternatively, you can implement your own string list (easiest way - inherit from Collection (Of String)), which will automatically convert all added string to lower case.


What you are trying to do and what you are doing don't match. To do what you want, you need to create your own collection class extending the generic collection - or provide a custom method on your settings class which manually adjusts the provided string before adding it to the local (private) string collection.

For an example of the second option, remove the public property of the settings class which exposes the list of string and use a method like the following:


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜