首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在VB.NET中为MustOverride sub指定返回类型"Derivative(of T)“?

是否可以在VB.NET中为MustOverride sub指定返回类型"Derivative(of T)“?
EN

Stack Overflow用户
提问于 2010-04-22 23:25:04
回答 1查看 192关注 0票数 0

VB.NET 2008 .NET 3.5

我有两个MustInherit (partial)基类。让我们分别调用一个类OrderBase和另一个类OrderItemBase。

特定类型的订单和订单项将从这些类继承。让我们称它们为WebOrder (继承自OrderBase)和WebOrderItem (继承自OrderItemBase)。

现在,在总体方案中,WebOrder是一个包含WebOrderItem的复合类,如下所示:

代码语言:javascript
复制
Public Class WebOrder
    Inherits OrderBase

    Public Property OrderItem() as WebOrderItem
    End Property

End Class

Public Class WebOrderItem
    Inherits OrderItemBase
End Class

为了确保从OrderBase派生的任何类都具有OrderItem属性,我想在OrderBase类中执行以下操作:

代码语言:javascript
复制
Public MustInherit Class OrderBase
    Public MustOverride Property OrderItem() as Derivative(Of OrderItemBase)
End Class

换句话说,我希望强制派生类包含一个返回OrderItemBase的派生的属性。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-23 11:25:52

两个选项立即浮现在脑海中:

首先:

代码语言:javascript
复制
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的派生类)

第二:

代码语言:javascript
复制
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)类上工作的方法成为泛型方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2692136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档