考虑以下表示订购系统的类:
Public Class OrderBase
Public MustOverride Property OrderItem as OrderItemBase
End Class
Public Class OrderItemBase
End Class
现在,假设我们想将这些类扩展到一组更具体的订单类,同时保持 OrderBase 的聚合性质:
Public Class WebOrder
Inherits OrderBase
Public Overrides Property OrderItem as WebOrderItem
End Property
End Class
Public Class WebOrderItem
Inherits OrderItemBase
End Class
WebOrder 类中的 Overriden 属性将导致错误,指出返回类型与 OrderBase 中定义的类型不同……但是,返回类型是 OrderBase 中定义的类型的子类。为什么VB不允许这样做?
最佳答案
你不能这样做 - 它正在改变在基础上定义的签名。要做你想做的事情,你需要使用泛型:
Public Class OrderBase(Of T As IOrderItem)
Public ReadOnly Property OrderItems As IList(Of T)
End Class
我的 Visual Basic 生锈了所以希望这是准确的...
关于vb.net - 是否可以在 VB.NET 中覆盖属性并返回派生类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2790607/