Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Написать Wrapper, Помогите с кодом 
:(
    Опции темы
AHgpeu
Дата 7.5.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 6.4.2007

Репутация: нет
Всего: нет



Компонент на основе Chart.
Нужно скрыть большинство свойств, и оставить основные только.

Чуствую что хожу вокруг до около.
Уже прошерстил достаточный объем информации о враперах
Но не могу приблизиться вплотную.
Понял уже что это проще элементарного.
Но нигде не нашел КАК КОНКРЕТНО его описать
Синтаксис.

Если не трудно
Для примера покажите плиз как написать враппер для класса Chart и скрыть у него свойство, например Series
--------------------
ᆉᆈǀƿᆇᆆᆅᆂᆁᆇᆆ
PM MAIL   Вверх
KelTron
Дата 7.5.2009, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 9
Всего: 38



Враппер, он же Wrapper, он же Обёртка. Название говорит само за себя.

Просто для свойств и методов, которые должны быть скрытыми не создаёшь делегирующих аналогов в твоей обёртке и всё...

Цитата(AHgpeu @  7.5.2009,  17:00 Найти цитируемый пост)
это проще элементарного.


Код

    public class MegaChart 
    {
        private Chart chart;

        //...далее определяешь необходимые свойства
        // и методы, которые должны быть открытыми внешнему коду и
        // делегируешь управление вложенному чарту

        public ТипСвойства КакоетоСвойство
        {
            get { return this.chart.КакоетоСвойство; }
            set { this.chart.КакоетоСвойство = value; }
        }
        //... 
        public ТипМетода СуперМетод(/*...*/)
        {
            return this.chart.СуперМетод(/*...*/);
        }
    }


А вообще посмотри паттерн Адаптер, это то что тебе нужно. 



Это сообщение отредактировал(а) KelTron - 8.5.2009, 10:43


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
AHgpeu
Дата 8.5.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 6.4.2007

Репутация: нет
Всего: нет



Спасибо.

Но я снова вернулся к исходной проблеме.
это же компонент...
Если порождать его от 
Код

Control

то опять же появляется у него много лишних свойств
Если сделать как просто класс, в которм объявить по вашему примеру Chart  - то как тогда показать этот компонент?

Или это делается совсем не так??

--------------------
ᆉᆈǀƿᆇᆆᆅᆂᆁᆇᆆ
PM MAIL   Вверх
Partizan
Дата 8.5.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



AHgpeu, 

KelTron же всё показал...не надо никого ни от кого порождать...
надо просто один объект положить внутрь другого...или один объект обернуть другим...как больше нравится...
wrapper характеризуется отношением агрегации, а не наследования...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
diadiavova
Дата 9.5.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



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


AHgpeu, А зачем это нужно? Возможно задачу можно иначе решить, да и каким образом могут помешать "лишние" свойства?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
AHgpeu
Дата 10.5.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 6.4.2007

Репутация: нет
Всего: нет



Цитата(diadiavova)

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

да-да-да!! Все правильно!

Цитата(diadiavova)

AHgpeu, А зачем это нужно? Возможно задачу можно иначе решить, да и каким образом могут помешать "лишние" свойства?

Мое приложение - генератор пользовательских отчетов. Можно добавлять различные компоненты на форму (Chart'ы, таблицы, блоки, линии и т.д.). После этого можно сгенерировать такой отчет.
Дело в том что с этим приложением будут работать пользователи, далекие от программирования. Свойства каждого добавленного компонента отображаются в PropertyGrid. Поэтому хотелось бы ограничить эти свойства только теми, которые нужны пользователи. Ничего лишнего.

Вот. Если коротко о поставленой задаче.
--------------------
ᆉᆈǀƿᆇᆆᆅᆂᆁᆇᆆ
PM MAIL   Вверх
diadiavova
Дата 10.5.2009, 19:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



AHgpeu, не обязательно в пропертигриде отображать сам описываемый компонент, вместо этого можно приладить к нему объект-дескриптор. Если делать всё по уму, то в гриде можно фильтровать отображаемые свойства, и здесь есть несколько способов.
В твоём случае фильтрацию лучше всего осуществить при помощи свойства BrowsableAttributes грида.
Приаттачиваю пример, где я создал контрол и атрибут и в гриде отображаются только свойства, помеченные моим атрибутом. Думаю: тебе этот вариант вполне подойдёт.

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  PropGridSmpl.rar 49,10 Kb


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
diadiavova
Дата 10.5.2009, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Да, ещё вот вариант Partizan выкладывал.
http://forum.vingrad.ru/act-ST/f-201/t-237160.html



Это сообщение отредактировал(а) diadiavova - 10.5.2009, 20:03


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.