Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Vingrad .NET Framework


Автор: Exception 6.1.2006, 19:51
Появилась у меня одна идея. Правда, мои идеи редко завершались успешно, ну да ладно smile . Дело в том, что зачастую необходим какой-то кусок кода, которого нету в .NET Framework. И не ожидается. Так вот. Было бы очень интересно создать совместными усилиями библиотеку таких классов. На данном этапе хотелось бы определить задачи, которые требуются от подобного фрэймворка.
Цели:
  • Создание независимой библиотеки с необходимыми классами
  • Портирование некоторых функций WinAPI, которые не реализованы в .NET Framework
  • Собирание freeware-компонентов в один фрэймворк (благо, есть Reflector)
Итак, кому это интересно, предлагайте, что в него можно включить.
P.S. Часть идеи взята http://forum.vingrad.ru/index.php?showtopic=77027&st=0&unread=&#entry608000, но немного изменена концепция.
Заниматься разработкой буду я и все желающие присоединиться smile

Автор: Exception 6.1.2006, 20:22
Кстати, туда можно засунуть наиболее интересные примеры из FAQ'а.

Автор: AntonioBanderaz 6.1.2006, 20:44
определи основные направления

Автор: Exception 6.1.2006, 20:52
Цитата(AntonioBanderaz @ 6.1.2006, 21:44 Найти цитируемый пост)

определи основные направления

Хотелось бы послушать Ваши предложения smile
Цитата(Exception @ 6.1.2006, 20:51 Найти цитируемый пост)

# Портирование некоторых функций WinAPI, которые не реализованы в .NET Framework
# Собирание freeware-компонентов в один фрэймворк (благо, есть Reflector)

smile

Автор: mr.DUDA 6.1.2006, 21:30
Предлагаю класс TypeName - удобное средство для парсинга, хранения, сравнения и сериализации информации о типах:

Автор: Exception 6.1.2006, 22:11
Хотелось бы для начала систематизировать это дело. Итак...
Vingrad.Controls - наши (и не только) юзерконтролы. Сюда будем складывать украшательства типа менюшек и прочее :)
Vingrad.Utils - нечто типа того, что предложил mr.DUDA.
Что еще?
P.S. Если есть интересные классы, постите с кратким описанием возможностей.
P.P.S. Библиотеку нужно только для 2.0? Или две версии?

Автор: dronzo 6.1.2006, 22:19
Цитата(Exception @ 6.1.2006, 22:11)
P.S. Если есть интересные классы, постите с кратким описанием возможностей.

Только своё или вообще, что интересное под руку подвернётся на досуге ? smile

Автор: Exception 6.1.2006, 22:38
Неважно, главное, чтобы с сорсами :)
mr.DUDA, сам писал :) ? Как будет комп, начну складывать классы в прожект. Правда, только для 2.0. Для 1.1 пусть делает кто-нибудь другой (если это вообще нужно), ибо 2003-й студии у меня нет.

Автор: mr.DUDA 6.1.2006, 23:26
Цитата(Exception @ 6.1.2006, 21:38 Найти цитируемый пост)
mr.DUDA, сам писал


неа, исходник не я писал, но использую часто smile

З.Ы. а не дублируем ли мы FAQ ? smile

Автор: sergejzr 6.1.2006, 23:35
FAQ - Frequently Asked Questions.

Библиотеки к вопросам как то не относятся smile


Цитата(dronzo @ 6.1.2006, 21:19 Найти цитируемый пост)

Только своё или вообще, что интересное под руку подвернётся на досуге ?

Я думаю всё таки надо делить контент и уж конечно брать можно исключительно то, что в public domain. Самое мелое ограничение - фтоппку. И над своей лицензией возможно стоит подумать. Короче обмозгуйте всё хорошо, прежде чем начинать собирать материалы.

Автор: Exception 6.1.2006, 23:50
Думаю, GPL вполне подойдет.
Добавлено @ 23:50
Ну и материалы из OpenSource-проектов, соответственно.

Автор: Void 6.1.2006, 23:52
Цитата(Exception @ 7.1.2006, 01:47 Найти цитируемый пост)
Думаю, GPL вполне подойдет.

Сильно сомневаюсь. GPL означает полный и безоговорочный запрет на использование в закрытом коммерческом коде. Оно нам надо? Что-то вроде BSD или MIT еще куда ни шло. А вообще: лучше, как сказал sergej.z, public domain.

Автор: Exception 7.1.2006, 00:33
А, ну да. Забыл про эту "особенность" ЖПЛ. А вообще, все, что нам нужно - запрет на продажу самой библиотеки. А больше запретов вроде и нет.

Автор: mr.DUDA 7.1.2006, 13:26
LGPL - вот то что подойдёт. Особенность этой лицензии: разрешено использование в любых проектах без каких-либо ограничений. Единственное условие лицензии: при внесении любых изменений в исходный код библиотеки, разработчику необходимо в обязательном порядке сообщить об этих изменениях нам, причём не просто сообщить - а предоставить полный изменённых исходный код, с описанием сути произведённых изменений.

По такой лицензии, к примеру, распространяется 3D-движок http://www.ogre3d.org. Плюсы: большое комьюнити. Минусы: нет.

Автор: Exception 7.1.2006, 13:38
ОК
Добавлено @ 13:38
ОК. Дай линк почитать

Автор: Lord Dagger 7.1.2006, 15:00
Цитата(Exception @ 6.1.2006, 19:51 Найти цитируемый пост)

Портирование некоторых функций WinAPI, которые не реализованы в .NET Framework

Хм, а как быть с проблемой использования unsafe code?
В оригинальном framework CLR предоставляет полностью безопасные интерфейсы.
У нас в этом плане намечается что-то вроде http://pinvoke.net/?

Не думаю, что стоит создавать библиотеку контролов - уже много аналогов, да и не сложно это - контрол создать. Гораздо лучше сосредоточится на системной функциональности.

Стоит обсудить идею сотрудничества с Microsoft.

P.S. Поправил орфографию и стилистику

Автор: Exception 7.1.2006, 15:40
Насчет контролов - имхо, самые лучшие и надо сунуть в библиотеку. А насчет функциональности - придумаем.
Добавлено @ 15:40
Какие классы вы хотели бы видеть в библиотеке?

Автор: Lord Dagger 7.1.2006, 16:52
Exception
Можно сделать класс для работы с файлами архивов (zip, gzip).
Также сделать быструю SOAP-сериализацию, помню, на RSDN была статья посвященная тормознутости этой функциональности в Framewok 1.1, не знаю, как там дело в 2.0

Автор: Exception 7.1.2006, 17:04
Про архивы - дельно. Поищу. Насчет быстрой SOAP - не думаю, что это необходимо.

Автор: Lord Dagger 7.1.2006, 19:36
Exception
Есть C# реализация zlib. Стоит встроить.

Автор: Lord Dagger 7.1.2006, 20:37
Уверен в необходимости использования библиотеки LZMA. Могу заняться ее имплементацией в среде .Net.
Добавлено @ 20:37
Кстати, а как назовем библиотеку smile Название "Vingrad .Net Framework" длинное и некрасивое. Надо по традиции короткое и стильное имяsmile

Автор: Void 7.1.2006, 20:46
Цитата(Lord Dagger @ 7.1.2006, 22:37 Найти цитируемый пост)
Уверен в необходимости использования библиотеки LZMA. Могу заняться ее имплементацией в среде .Net.

Так вроде бы http://www.7-zip.org/sdk.html?

Автор: Lord Dagger 7.1.2006, 21:03
Void
Имелось в виду - включить эту реализацию в состав нашего framework.

Автор: Exception 7.1.2006, 21:08
Void, там есть ограничение на изменение. Нам такая не пойдет. Дело в том, что хочется сделать архиватор так: есть пр-во имен Vingrad.Files.Archive, в нем есть абстрактный класс Archiver (с абстрактными методами по архивации/деархивации). А потом для наиболее распространенных типов архивов наследовать от него (ZipArchiver, RarArchiver, etc).

Автор: Lord Dagger 7.1.2006, 21:18
Цитата(Exception @ 7.1.2006, 21:08 Найти цитируемый пост)

Дело в том, что хочется сделать архиватор так: есть пр-во имен Vingrad.Files.Archive, в нем есть абстрактный класс Archiver (с абстрактными методами по архивации/деархивации). А потом для наиболее распространенных типов архивов наследовать от него (ZipArchiver, RarArchiver, etc).

Да, именно такsmile Единственный вопрос - не является ли формат rar проприетарным?

Автор: mr.DUDA 7.1.2006, 21:24
Vingrad.Framework - вроде, название неплохое

Цитата(Exception @ 7.1.2006, 12:38 Найти цитируемый пост)
ОК. Дай линк почитать

http://www.gnu.org/copyleft/lgpl.html

P.S.
Насчёт архиваторов, могу предложить http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx

Автор: Lord Dagger 7.1.2006, 21:34
mr.DUDA
Хм. Это то, о чем я говорил, но есть один момент - у нее рецензия GPL, это нам не подходит.
И одной этой либой явно не обойтись - мало форматов знаетsmile
Добавлено @ 21:32
Цитата(mr.DUDA @ 7.1.2006, 21:24 Найти цитируемый пост)

http://www.gnu.org/copyleft/lgpl.html

Может быть, Вы имели ввиду http://www.gnu.org/copyleft/lesser.html smile
Добавлено @ 21:34
Код

LGPL == GNU Lesser General Public License;

Если не ошибаюсь;)

Автор: Void 7.1.2006, 21:37
Цитата(Lord Dagger @ 7.1.2006, 23:18 Найти цитируемый пост)
Единственный вопрос - не является ли формат rar проприетарным?

Исходники распаковщика открыты с единственным ограничением: запрет на восстановление оригинального алгоритма сжатия.

Автор: mr.DUDA 7.1.2006, 21:41
Цитата(Lord Dagger @ 7.1.2006, 20:34 Найти цитируемый пост)
http://www.gnu.org/copyleft/lgpl.html

Может быть, Вы имели ввиду http://www.gnu.org/copyleft/lesser.html

Угу, именно это имел ввиду.

Автор: Exception 7.1.2006, 22:07
Просмотрел, вроде подходит. Кто может заняться (де)архиватором? Для начала нужен абстр. класс Vingrad.Framework.FileIO.Archiving.Archivator с override-пропертями типа FileExtension и override-методами для паковки/распаковки. Сейчас я не за компом, посему заняться не могу..

Автор: Lord Dagger 7.1.2006, 22:36
Exception
Могу попробовать, только надо определить функциональность требуемую.
Цитата(Exception @ 7.1.2006, 22:07 Найти цитируемый пост)

Vingrad.Framework.FileIO.Archiving.Archivator

А почему бы не Vingrad.Framework.IO.File.Archiving.Archiver?
Добавлено @ 22:27
Думаю, вначале надо выстроить базовую иерархию пространства имен и его классов.
Желательно, оформить графическиsmile
Давайте обсудим детали.
А то начинать красить доски, когда еще столбы для забора не поставили... smile
Добавлено @ 22:36
Организовал SVN репозиторий:
svn://svn.subversion.ru/usr/local/svn/vingrad_framework
Рекомендую использовать клиент http://tortoisesvn.tigris.org/.
Для создания аккаунта обращайтесь ко мнеsmile

Автор: Exception 7.1.2006, 22:59
Гы. У меня компа нет под рукой (. Других вариантов нет? Типа irc и т.п.? А вообще, нам бы чатик простенький...
По сабжу: Archiver, естессно ). Хотя, наверное проще будет разделить его на 2 кл. - Archiver и Dearchiver. Archiuer имеет private-конструктор и три конструктора с параметрами: один принимает массив файлов, другой - массив строк-имен файлов, третий - каталог для архивации. Ну и развивай идею дальше :)

Автор: Lord Dagger 7.1.2006, 23:28
Exception
Цитата(Exception @ 7.1.2006, 22:59 Найти цитируемый пост)

Других вариантов нет? Типа irc и т.п.? А вообще, нам бы чатик простенький...

Брр. Не пойму, как irc может служить алтернативой SVN? smile
Чат - есть тот же Skype, irc (хотя его люблю меньше)
Цитата(Exception @ 7.1.2006, 22:59 Найти цитируемый пост)

Хотя, наверное проще будет разделить его на 2 кл. - Archiver и Dearchiver

Ну это дело вкусаsmile Можно и так.
Надо бы понять, из каких частей будет состоять весь namespace...
Пока я представляю себе это так:
Framework->IO->File->Archiving // Файловый ввод\вывод
Framework->IO->Network->FTP // Это я для примера, сюда будем помещать сетевой ввод\вывод
Framework->System // Системные функции. К примеру, функциональность для работы с Event Log

Продолжаем списокsmile

Автор: Lord Dagger 7.1.2006, 23:50
Поступили мне предложения реализовать формат для хранения информации, более компактный и быстрее парсимый, чем XML.
Народ предлагает текстовый и бинарный формат реализовать. Можно будет подумать, тем более, что многие все равно разрабатывают свои форматыsmile

Автор: Exception 8.1.2006, 00:29
Более удобного, честно говоря, не представляю. Зачем изобретать велосипед?
По сабжу:
(using Vingrad.Framework;)
Media - тут будут различные проигрыватели и т.п.
Text - функции String'а "в удобной упаковке" - поиск по regexp, поиск по wildcards, замена и т.п.

Автор: Medved 8.1.2006, 01:13
В целом, на мой взгляд это хорошая идея.

Только прежде чем вдаваться в конкретные детали реализации, необходимо четко очертить предметную область.
Т.е. необходимо выявить и установить все те требования, которым эта библиотека должна отвечать.
Прежде чем приступать к реализации этой библиотеки, ее необходмо сначала тщательно продумать.

Начать имхо лучше с того, что надо разработать ее варианты использования (Use Case).
Если кто-нибудь не значет что это такое, рекомендую в первую очередь изучить UML, и только затем браться за проектирование этой либы.
Если кто-то считает, что ему как программисту, не нужен UML, то я могу только посочувствовать этому человеку.

Автор: Exception 8.1.2006, 01:45
Хм.. Use Case для библиотеки? Зачем?

Автор: Lord Dagger 8.1.2006, 02:30
Цитата(Pegas @ 8.1.2006, 01:13 Найти цитируемый пост)

Только прежде чем вдаваться в конкретные детали реализации, необходимо четко очертить предметную область.
Т.е. необходимо выявить и установить все те требования, которым эта библиотека должна отвечать.
Прежде чем приступать к реализации этой библиотеки, ее необходмо сначала тщательно продумать.

Я согласен, мы уже к этому приступили.
Цитата(Pegas @ 8.1.2006, 01:13 Найти цитируемый пост)

Если кто-нибудь не значет что это такое, рекомендую в первую очередь изучить UML, и только затем браться за проектирование этой либы.

Знаем, батенька, знаемsmile
Без UML в проектах никуда, как и без четкой документации.
Только пока не очерчены примерные контуры затеи, за UML рано браться.

Думаю, за два-три дня соберутся основные идеи, затем - Microsoft Project нам поможет.
Составим шаблон, будем детализировать "сверху вниз".
Отдельно - спецификации кодирования и проекта.
В качестве средства документирования осмелюсь предложить doxygen.

Автор: Medved 8.1.2006, 03:14
Цитата(Lord Dagger @ 8.1.2006, 05:30 Найти цитируемый пост)

Только пока не очерчены примерные контуры затеи, за UML рано браться.


Диаграмы вариантов использования (Use Case) как раз-то и помогают в четком определение границ предметной области и уточнении требований к разрабатываемой системе.
Кроме того, использование этих диаграм закладывает основу для создания словаря терминов, для конкретной предметной области, с помощью которого в дальнейшем и будут общаться и понимать друг-друга как разработчики, так и другие члены команды (системные аналитики, системные архитекторы, тестеры, и т.д.)

Автор: Exception 8.1.2006, 03:31
Эээ.. Насколько я знаю, use case применяются для описания конкретных операций взаимодействия юзера (а так как мы пишем библиотеку, программиста) с каким-либо из наших классов или их системой. Дык как можно их строить, если мы еще не до конца сформулировали состав этой библиотеки и ее задаци?

Автор: Medved 8.1.2006, 21:28
Цитата(Exception @ 8.1.2006, 06:31 Найти цитируемый пост)

Эээ.. Насколько я знаю, use case применяются для описания конкретных операций взаимодействия юзера (а так как мы пишем библиотеку, программиста) с каким-либо из наших классов или их системой.


Рекомендую почитать какой-нибудь учебник по UML. К примеру того же Леоненкова. Очень хорошо пишет.

Автор: Exception 8.1.2006, 23:39
Pegas, линка нету почитать?
Просто библиотека задумывалась как "свалка" классов, а не как цельный продукт. Посему не знаю, что тут можно моделировать.. Объясни подробнее, плз

Автор: Medved 9.1.2006, 11:53
Есть, в разделе нашего форума, посвященному UML и системному анализу.
Там прикрепленная тема, в которой собирают сслыки на интересные рессурсы.

Или воспользуйся поиском по форуму.

Автор: arilou 9.1.2006, 22:22
Цитата(Exception @ 8.1.2006, 23:39 Найти цитируемый пост)

как "свалка" классов, а не как цельный продукт

В итоге может реально получиться свалка классов, а не целый продукт smile
Цитата(Exception @ 8.1.2006, 03:31 Найти цитируемый пост)

Дык как можно их строить, если мы еще не до конца сформулировали состав этой библиотеки и ее задаци?

В это то и вся соль. Строятся use-cases как будтно бы биб-ка уже написана, так, чтобы все было как можно удобнее для юзера (или программера, в зависимости от target audience проекта). И на основе оных потом проектируются классы. Это может показакться странным, но какая-то сермяжная правда в этом есть.

А идея хороша. Я думаю, что надо определить общую "кучу фич", разбить ее на большие группы неймспейсов. Потом выделить группы по майлстоунам (типа версия 1, версия 2, и т.д.) и распределять между программерами на реализацию. От себя могу предложить реализацию паттерна registry с поддержкой отложенного поиска объектов 8-) (.NET 2.0). Она подходит для создания списков и иерархических структур, где необходимо дать возможность третьей стороне добавить элемент в реестр по запросу (lazy-load поведение). Я сам на ее основе делал иерархическую систему плагинов.

Автор: Exception 11.1.2006, 13:27
Млин... А не мог бы кто-нибудь подумать над use-cases? Ну не знаю я UML нормально ) не хочется, чтобы проект умер. На данный момент нужен тот, кто знает uml и мог бы помочь с этим. Я готов заниматься конкретными классами/кодингом.

Автор: Medved 11.1.2006, 13:37
Очень разумное решение Exception. На мой взгляд, ты очень правильно смог оценить свои силы, и не стал взваливать на себя больше, чем можешь понести на данный момент.
Такая объективность достойна плюса. Держи...

Для увиличения своей "грузоподъемности" я бы порекомендовал начать с прочтения книги http://www.helloworld.ru/texts/comp/other/oop/index.htm. ИМХО это первый шаг, к изучению UML.

Автор: dronzo 11.1.2006, 13:46
Пробежавшись по форумам (всем), наткнулся на обилие тем, где спрашивается о том, как работать с COM-портом. Ради интереса загнал "COM-порт" в поиск и получил 24 страницы ссылок на информацию для размышления smile Имхо, класс для работы с COM-портом включить стоит, так как тема очень насущная, да и исходники несколько дней назад пробегали на форуме.

Автор: Poison80 11.1.2006, 16:14
Цитата(dronzo @ 11.1.2006, 13:46)
Пробежавшись по форумам (всем), наткнулся на обилие тем, где спрашивается о том, как работать с COM-портом. Ради интереса загнал "COM-порт" в поиск и получил 24 страницы ссылок на информацию для размышления  smile  Имхо, класс для работы с COM-портом включить стоит, так как тема очень насущная, да и исходники несколько дней назад пробегали на форуме.

а смысл?! класс для работы с ком портом идет в Net framework 2.0

Автор: dronzo 11.1.2006, 17:17
Poison80
Нигде до этого в теме не было сказано, что проект будет ориентирован исключительно на .NET Frawework 2.0.

Автор: Medved 11.1.2006, 19:00
Цитата(dronzo @ 11.1.2006, 20:17 Найти цитируемый пост)

Нигде до этого в теме не было сказано, что проект будет ориентирован исключительно на .NET Frawework 2.0.


ИМХО это подразумевается само собой.

Автор: Exception 25.1.2006, 17:56
DatasetSerializer.vb

Код

Public Class DataSetSerializer(Of T)

    Private Shared _xmler As New XmlSerializer(GetType(T), "")

    Protected Sub New()
    End Sub

    Public Shared Function Serialize(ByVal obj As T) As DataSet
        Dim ds As New DataSet
        Using ms As New MemoryStream
            _xmler.Serialize(ms, obj)
            ms.Seek(0, SeekOrigin.Begin)
            ds.ReadXml(ms)
        End Using
        Return ds
    End Function

    Public Shared Function Deserialize(ByVal dataSet As DataSet) As T
        Dim result As T
        Using ms As New MemoryStream
            ms.Seek(0, SeekOrigin.Begin)
            result = CType(_xmler.Deserialize(ms), T)
        End Using
        Return result
    End Function

End Class

Расставил. Использование:
Код

Public Class [Order]

    Public OrderID As Guid

    Public Customer As String

    Public Sub New(ByVal orderID As Guid, ByVal customer As String)
        Me.OrderID = orderID
        Me.Customer = customer
    End Sub

End Class

Public Class Startup

    Public Shared Sub Main()
        Dim o1 As New [Order](Guid.NewGuid(), "Dan")
        Dim o2 As New [Order](Guid.NewGuid(), "Someone")
        Dim orders As [Order]() = {o1, o2}
        Dim resultSet As DataSet = DataSetSerializer(Of [Order]()).Serialize(orders) 'Результат записывается в датасет
    End Sub

End Class

Полезен, например, если движок БД возвращает массив бизнес-объектов, а необходимо выполнить databounding.

Автор: Medved 25.1.2006, 18:04
Если можно, то отформатируй пожалуйста код. Так сложно его читать.

Автор: Exception 25.1.2006, 20:23

Добавлено @ 20:26

Автор: Exception 30.1.2006, 16:45
Цитата(Pegas @ 25.1.2006, 19:04 Найти цитируемый пост)

Если можно, то отформатируй пожалуйста код. Так сложно его читать.

fixed smile
Плюс разъяснение, зачем этот код

Автор: Exception 20.3.2006, 22:42
Так-с... smile
Похоже, энтузиастов, готовых сюда складировать решения, не наблюдается smile . Чего же так? Вот, например, только что человеку понадобилось считать CRC. Почему бы не засунуть это в отдельный класс? Давайте все-таки постараемся медленно, но наполнять пока что несуществующую библиотеку. Вещь-то полезная..

Автор: Xenon 11.1.2007, 18:06
И умерло smile

Автор: Gregorian 11.1.2007, 18:54
Капец.  smile 

Автор: mr.DUDA 11.1.2007, 19:21
Нет, ну примеров-то полно. Правда все они по темам раскиданы, самому иногда искать приходилось.

Автор: Real 2.1.2008, 23:10
Я хачу добавить методы до .NET Framework? 

Автор: Kefir 3.1.2008, 10:34
Оп. Привет. Ну, в общем, задумка интересная. Только со своей стороны не могу чего-то особенного предложить. Из интересного есть два контрола для WPF, а они, как я понял, не очень подходят для этого дела. Делают очень простые вещи. Первый - для просмотра FlowDocument с возможностью забайндить документ (по дефолту контролы от мс могут читать только с диска). Второй же контрол - логический UniformGrid. То биш поддерживает логический скроллинг (из МС-овских контролов логический скроллинг поддерживают только StackPanel и VirtualizingStackPanel).
Ещё можно замутить WebBrowser для WPF (опять же Frame не поддерживает эвентов отслеживания загрузки), но это будет на интеропе с обычным винформовым браузером. А вообще WebBrowser-а очень не зватает нативного для ВПФ.

И ещё вам на рассуждения - хэш функции с простым использованием (Hash.SHA1(String s) или Hash.MD5(File f)). Будет очень полезно.

Добавлено через 35 секунд
Ух, не заметил, что тема настолько старая В))))

Автор: kurzon 3.1.2008, 17:43
Как добавить методы до .NET Framework?  
2Модеры Закрепите ету тему!!!

Автор: ivashkanet 3.1.2008, 17:51
Цитата(Real @  2.1.2008,  23:10 Найти цитируемый пост)
Я хачу добавить методы до .NET Framework?  

Цитата(kurzon @  3.1.2008,  17:43 Найти цитируемый пост)
Как добавить методы до .NET Framework? 

Ну вот Реал и запалился  smile 

Так безграмотно написать мог только один человек

Автор: mr.DUDA 3.1.2008, 17:59

 ! 
mr.DUDA
kurzon/Real, оффтоп! И вообще, про добавление методов в фреймворк тебе уже ответили что можно только унаследовать класс от стандартного, не более того.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)