Свойство Vb.net Custom Class в нижнем регистре - PullRequest
0 голосов
/ 04 июня 2010

Я пытаюсь создать класс настроек. Свойство Test () представляет собой список строк.

Когда я добавляю строку, такую ​​как: t.test.Add ("asasasAAAAA") Я хочу, чтобы он автоматически стал строчным.

По какой-то причине это не так. Есть идеи?

p.s. использование t.test.Add (("asasasAAAAA"). ToLower) не будет работать для того, что мне нужно.

Спасибо.

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

Ответы [ 2 ]

1 голос
/ 04 июня 2010

В этом причина: set accessor вашей собственности фактически никогда не вызывается. когда вы используете t.test.Add("asasasAAAAA"), вы фактически вызываете метод доступа get, который возвращает список после того, как указанная строка добавлена ​​в этот список, поэтому функция .ToLower никогда не вызывается. Простой способ исправить это:

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

Кроме того, вы можете реализовать свой собственный список строк (самый простой способ - наследовать от Collection (Of String)), который автоматически преобразует все добавленные строки в нижний регистр.

0 голосов
/ 04 июня 2010

То, что вы пытаетесь сделать, и то, что вы делаете, не совпадают. Чтобы сделать то, что вы хотите, вам нужно создать собственный класс коллекции, расширяющий общую коллекцию, или предоставить собственный класс для вашего класса настроек, который вручную корректирует предоставленную строку перед , добавляя ее в локальную (частную) строку коллекция.

В качестве примера второй опции удалите открытое свойство класса settings, которое предоставляет список строк, и используйте метод, подобный следующему:


Public Sub Add(ByVal newProp As String)
  strtest.Add(newProp.toLower())
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...