2010-06-03 89 views
0

我正在嘗試創建一個設置類。 Property Test()是一個字符串列表。Vb.net自定義類屬性爲小寫

當我添加一個字符串,如: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

回答

0

你正在嘗試做的,你在做什麼不匹配。要做你想做的事,你需要創建你自己的集合類來擴展泛型集合 - 或者在你的設置類中提供一個自定義方法,手動調整之前提供的字符串將其添加到本地(私有)字符串集合。

對於第二種選擇的例子,刪除設置類暴露字符串列表的公共財產和使用方法如下所示:


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

非常感謝。 – tcables 2010-06-04 01:22:59

1

這就是原因:設置你的財產的訪問實際上從來沒有叫過。 當你使用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(串)繼承),它會自動轉換所有添加字符串爲小寫。

+0

兩個答案基本相同......但我接受的答案更適合一點。 謝謝。 – tcables 2010-06-04 01:22:34