VB.Net中的递归泛型类型声明

时间:2011-03-23 19:11:34

标签: .net vb.net generics inheritance

我是VB的新手,我很难理解以下(遗留代码)类声明的实际含义:

Public MustInherit Class ModelBase(Of T As {ModelBase(Of T, TIdType), New}, TIdType)

任何人都能解释一下吗?还有一个相关的ModelBaseCollection

Public MustInherit Class ModelBaseCollection(Of TCollection As {ModelBaseCollection(Of TCollection, TModel, TIdType), New}, TModel As {ModelBase(Of TModel, TIdType), New}, TIdType)
Inherits Collection(Of TModel)

我很难理解ModelBaseCollection类的必要性,因为ModelBase类是泛型类型。

1 个答案:

答案 0 :(得分:1)

鉴于8个月以来缺乏答案,引用好奇重复模板模式的评论已经(正确)被视为解决方案。

然而,这可以明确地描述:

Public MustInherit

可公开访问,无法直接创建,但必须继承才能使用;

 Class ModelBase(Of

这是一个通用类,其中指定的类是:

  T As {ModelBase(Of T, TIdType), New},

从此类继承的可创建类,

  TIdType)

另一种类型。

在没有看到其余代码的情况下,ModelBaseCollection只是同一种构造,能够引用(一个继承类)本身的可创建版本以及相应的ModelBase。 / p>