0

VB.NET 2008 .NET 3.5

MustInherit(部分的)である2つの基本クラスがあります。1つのクラスをOrderBaseと呼び、もう1つのクラスを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

2つのオプションがすぐに思い浮かびます。

初め:

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の派生クラスではありません)。

2番:

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 に答える