VB.NET 2008 .NET 3.5
我有两个MustInherit (partial)基类。让我们分别调用一个类OrderBase和另一个类OrderItemBase。
特定类型的订单和订单项将从这些类继承。让我们称它们为WebOrder (继承自OrderBase)和WebOrderItem (继承自OrderItemBase)。
现在,在总体方案中,WebOrder是一个包含WebOrderItem的复合类,如下所示:
Public Class WebOrder
Inherits OrderBase
Public Property OrderItem() as WebOrderItem
End Property
End Class
Public Class WebOrderItem
Inherits OrderItemBase
End Class为了确保从OrderBase派生的任何类都具有OrderItem属性,我想在OrderBase类中执行以下操作:
Public MustInherit Class OrderBase
Public MustOverride Property OrderItem() as Derivative(Of OrderItemBase)
End Class换句话说,我希望强制派生类包含一个返回OrderItemBase的派生的属性。
这是可能的吗,或者我应该使用完全不同的方法?
发布于 2010-04-23 11:25:52
两个选项立即浮现在脑海中:
首先:
Public MustInherit Class OrderBase
Public MustOverride Property OrderItem As OrderItemBase
End Class
Public Class WebOrder
Inherits OrderBase
Public Overrides Property OrderItem As OrderItemBase
End Class这将使所有派生类都具有OrderItemBase类型的属性(而不是OrderItemBase的派生类)
第二:
Public MustInherit Class OrderBase(Of TItem As OrderItemBase)
Public MustOverride Property OrderItem As TItem
End Class
Public Class WebOrder
Inherits OrderBase(Of WebOrder)
Public Overrides Property OrderItem As WebOrder
End Class请注意,这会更改类的层次结构,使您的所有订单都没有一个基类。您必须使任何在OrderBase(Of TItem)类上工作的方法成为泛型方法。
https://stackoverflow.com/questions/2692136
复制相似问题