0

VB.NET 2008 .NET 3.5

我有两个 MustInherit(部分)基类。让我们调用一个类 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 的派生类。

这是可能的,还是我应该使用完全不同的方法?

4

1 回答 1

0

立即想到两个选项:

第一的:

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)类通用的方法。

于 2010-04-23T03:25:52.210 回答