Я пишу главную страницу ASP.NET, которая выполняет общую работу по редактированию мастера / деталей (ValidationSummary, обработка ошибок, всплывающее окно с подробным представлением с использованием диалога jQuery-ui).Он имеет два элемента управления ContentPlaceHolder
для основного и подробного видов, ожидается, что основной заполнитель будет содержать GridView
, а заполнитель сведений - либо DetailsView
, либо FormView
.
Основная страницапросто необходимо получить доступ к нескольким базовым членам DetailsView или FormView:
- метод ChangeMode
- метод DataBind
- свойство CurrentMode
- метод InsertItem
- Метод UpdateItem
Я был удивлен, увидев, что, хотя DetailsView и FormView имеют одинаковые члены, они (кроме DataBind) не наследуются от общего базового класса или интерфейса.Есть даже два эквивалентных перечисления FormViewMode
и DetailsViewMode
, так что члены ChangeMode и CurrentMode даже не имеют одинаковую подпись.
Я собираюсь обойти это путем создания класса-оболочки, ноМожет кто-нибудь объяснить, почему они реализованы так?Я накапливаю неприятности, пытаясь использовать их полиморфно?
Мне трудно поверить, что это не было преднамеренным со стороны инженеров Microsoft, поэтому я могу только заключить, что они намеревались препятствовать полиморфному использованию.