我最初认为里德的回答是我以后的回答。在我的应用程序中,我想使用“子属性”在表单标签上设置属性。 (我试图发出只有我想提供给自定义控件的标签属性)
我尝试这样做:
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 –