Наследование абстрактных Контролов

Язык C#: программирование на C#, портирование кода C# на VB и VB на C#.

Модератор: Ramzes

Shota
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 21.12.2007 (Пт) 17:50

Наследование абстрактных Контролов

Сообщение Shota » 21.12.2007 (Пт) 18:01

Ситуация:
Нужно создать библиотеку UserControl-ов которые имеют в основном общее поведение, но кое в чем отличаются.
Если создать базовый класс BaseControl наследующий от UserControl и унаследовать от него ChildControl то все работает, как только я определяю BaseClass как abstract DesignView умирает...
Вопрос:
Как унаследовать абстрактный класс, чтоб при этом сохранить возможность проектировать контрол в режиме Конструктора?

Спасибо..........

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Сообщение mdx » 22.12.2007 (Сб) 11:00

Вопрос: а зачем нужно чтобы класс был абстрактным?
This posting is provided "AS IS" with no warranties, and confers no rights.

Изображение

Shota
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 21.12.2007 (Пт) 17:50

Вопрос: а зачем нужно чтобы класс был абстрактным?

Сообщение Shota » 24.12.2007 (Пн) 10:06

На основании текстового описания контролов создается интерфейс. Контролы нескольких видов.
У всех контролов есть свойства:
Код: Выделить всё
public abstract class BaseControl
{
public string Caption
public abstract string Value
public abstract bool ReadOnly
public abstract bool Required
....
}

Где реализация Caption у всех одинаковая, а остальные свойства для каждого контрола свои и в базовом класе смысла не имеют.
таким образом создавать экземпляр класса BaseControl не имеет смысла. В то же время можно определить интерфейс со всеми свойствами и реализовать его во всех контролах, но тогда придется каждых раз заново реализовывать Caption ( и не только )
Поэтому имеет смысл объявить базовый класс как абстрактный тем самым заставить всех "наследников" написать свою реализацию Value, ReadOnly ........ ( но при этом режим DesignView просто умрет )

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Сообщение mdx » 24.12.2007 (Пн) 16:07

В базовом классе реализуешь все что не хочется сделать абстрактным, в интерфейсе - то что отмечено абстрактным. Так по-моему во многих контролах windows forms сделано
This posting is provided "AS IS" with no warranties, and confers no rights.

Изображение

Shota
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 21.12.2007 (Пт) 17:50

Сообщение Shota » 25.12.2007 (Вт) 9:22

В базовом классе реализуешь все что не хочется сделать абстрактным, в интерфейсе - то что отмечено абстрактным. Так по-моему во многих контролах windows forms сделано

Я именно так и сделал........ просто оставалась возможность создать экземпляр базового класса, что просто не имеет смысла, но ( как мне подсказали ) можно определить в базовом классе закрытый конструктор, таким образом и эта проблема решается.......
всем спасибо.


Вернуться в C#

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

    TopList