【发布时间】:2010-10-07 22:48:10
【问题描述】:
这在带有属性的 VB.NET 中似乎是不可能的,因为属性语句本身必须描述它是否是 ReadOnly。
在下面的示例中,它不允许我编译 ReadWriteChild。我想我可以让父级读/写,然后让 ReadOnlyChild 的设置器不做任何事情,但这似乎有点 hacky。在这种情况下,最好的选择似乎是放弃属性,转而使用 getter/setter 方法。
Public MustInherit Class Parent
Public MustOverride ReadOnly Property Foo() As String
End Class
Public Class ReadOnlyChild
Inherits Parent
Public Overrides ReadOnly Property Foo() As String
Get
' Get the Property
End Get
End Property
End Class
Public Class ReadWriteChild
Inherits Parent
Public Overrides Property Foo() As String
Get
' Get the property.
End Get
Set(ByVal value As String)
' Set the property.
End Set
End Property
End Class
【问题讨论】:
-
我不认为你可以在 VB.NET 中做到这一点(有人要证明我错了)如果它肯定是你自己的课程之一,你需要这样做的理由是什么这表明设计存在错误......或者接口可能会更好地使用?
-
在我的情况下,该属性对于大多数子类型实际上是正确的,但有一个属性是可编辑的。现在我正在使用类型检查,但可覆盖的属性会更合适。
标签: c# vb.net inheritance properties readonly