我最初認爲裏德的回答是我以後的回答。在我的應用程序中,我想使用「子屬性」在表單標籤上設置屬性。 (我試圖發出只有我想提供給自定義控件的標籤屬性)
我嘗試這樣做:
Public Class Fruit
Private _name As New Translations
Public Property Name As Translations
Get
Return _name
End Get
Set(value As Translations)
_name = value
_PrimaryCaps = _name.Primary.ToUpper
End Set
End Property
'Private variable is automatically added for unexpanded property
Public Property PrimaryCaps As String
End Class
Public Class Translations
Public Property Primary As String
Public Property Spanish As String
End Class
然後
Dim myFruit As New Fruit
myFruit.Name.Primary = "Apple"
myFruit.Name.Spanish = "Manzana"
Dim primaryCaps As String = myFruit.PrimaryCaps
古怪 - 至少對我來說 - 這不起作用; myFruit.PrimaryCaps不會返回所希望的「APPLE」。看起來,Set for Name從不執行。 (配售_PrimaryCaps分配中獲取返回不工作上面,但是。)
(我認識到,一個PrimaryCaps屬性可以被添加到翻譯類,但同樣,如果你想設置一個這樣沒有幫助外部變量來自水果的一個實例。)
我不知道這是否是「通過設計」,我是否簡單地誤解了預期的功能或內容。在進一步研究之後,我做了一件事,那就是這種結構在.NET中並不常見;例如設置控件的大小按如下規則進行:
oControl.Size = New Drawing.Size(20, 15)
,而不是簡單的設置,也就是說,直接Width屬性:
oControl.Size.Width = 20
(後者將無法編譯:「表達的是一種價值因此不能成爲任務的目標。「)
如果有人對此有更多的瞭解,我很樂意聽到它。例如,我知道這可以簡單地通過使用Fruit實例來完成,但這不是重點。
你有沒有考慮過使用資源文件? – Caramiriel
我不熟悉...對不起 –
http://jebarson.info/post/2011/03/24/Localization-Multilingual-Support-Using-Resource-Files-In-net.aspx –