Объявление рекурсивного универсального типа в VB.Net - PullRequest
1 голос
/ 23 марта 2011

Я новичок в 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 Ответ

1 голос
/ 01 декабря 2011

Учитывая отсутствие ответа в течение более 8 месяцев, комментарии, относящиеся к любопытно повторяющемуся шаблону , рассматривались (правильно) как решения.

Тем не менее, это может быть явноописано:

Public MustInherit

Он общедоступен и не может быть создан напрямую, но должен быть унаследован для использования;

 Class ModelBase(Of

Это универсальный класс, гдеК указанным классам относятся:

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

создаваемый класс, унаследованный от этого класса, и

  TIdType)

другого типа.

Не видя остальной код, ModelBaseCollection - это такая же конструкция, которая может ссылаться на создаваемые версии самого (унаследованного класса) и соответствующие ModelBase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...