« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга

Тестирование 64-битных приложений

ПнВтСрЧтПтСбВс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
    Популярное
Переназначение

Диалог About

Google для программистов

Вычисление нормалей к поверхностям

Функция AccessResource

Горячие клавиши

Получение информации о схеме размещения данных в объекте DataTabie (Таблица данных)

Web-служба Hotel Broker (Брокер гостиницы)

Описание функций C (Си) / C++ - ultoa

Создание профессионального интерфейса




    Архив файлов



    Сообщества



    Документация

Статьи:: Visual Studio :: Создание макросов в Visual Studio .NET


отправить ссылку другу версия для печати  Обсудить на форуме

Создание макросов в Visual Studio .NET





Автор: James Coleman. Перевод: LoI для Realcoding.NET

Загрузить примеры - 1.13 кб

Привет крутой кодер. Ты наверное не раз слышал о таких замечательных вещах как макросы, которые позволяет сэкономить кучу времени в процессе разработки и сделать твой код более удобочитаемым. Я тоже слышал о них довольно много интересного, но все не хватало времени в них разобраться. Наверное, у тебя та-же проблема? Но сегодня мир вокруг тебя изменится, пристигни ремни, сейчас мы с тобой научимся создавать макросы в Visual Studio.net, что позволит тебе в будущем хоть немного облегчить нелегкий программерский труд.

Макрос который мы создадим, будет автоматически создавать переменные а также их соответствующие Pubic-свойства. Чтобы показать как макрос может по-разному работать в зависимости от заданных условий, мы создадим окошко, в котором спросим у пользователя действительно ли члены должны быть сортированы в алфавитном порядке.

КОДДИНГ

Требование к макросу:

Макрос должен из этого:

CustomerName String
AccountBalance Double
CustomerPhone String
CustomerAddress String
CustomerID Integer

Сделать это:

Private mAccountBalance as Double
Private mCustomerAddress as String
Private mCustomerID as Integer
Private mCustomerName as String
Private mCustomerPhone As String

Public Property AccountBalance As Double
Get
Return mAccountBalance
End Get
Set(ByVal Value As Double)
mAccountBalance = Value
End Set
End Property
Public Property CustomerAddress As String
Get
Return mCustomerAddress
End Get
Set(ByVal Value As String)
mCustomerAddress = Value
End Set
End Property
Public Property CustomerID As Integer
Get
Return mCustomerID
End Get
Set(ByVal Value As Integer)
mCustomerID = Value
End Set
End Property
Public Property CustomerName As String
Get
Return mCustomerName
End Get
Set(ByVal Value As String)
mCustomerName = Value
End Set
End Property
Public Property CustomerPhone As String
Get
Return mCustomerPhone
End Get
Set(ByVal Value As String)
mCustomerPhone = Value
End Set
End Property

От слов к делу:

Чтобы создать наш макрос сначала зайдем в Macro IDE (Tools -> Macros -> Macro IDE или Alt+F11). Выбираем существующий макро проект, или создаем новый и добавляем в него макро модуль. Ты можешь использовать дофига методов внутри каждого макроса, но сейчас нас интерисует только один - ConvertProperties(). Этот метод возвращает текущий выделенный текст, обрабатывает его и заменяет его декларациями членов и свойств.

Получаем доступ к тексту:

Чтобы получить доступ к выделенному пользователем тексту, будем использовать множество имен EnvDTE

Dim txt As TextSelection
txt = DTE.ActiveDocument.Selection

Using RegEx:

Регулярные выражения нам пригодятся для опознования выделенного текста, и позволят нам выделить имена свойств и типы переменных. Отсевать данные мы будем по словам varname и typename.

Dim r As Regex
r = New Regex( _
"s*(?S*)s*(?S*)", _
RegexOptions.IgnoreCase Or RegexOptions.ExplicitCapture)

Построчная обработка:

В процессе разделения выбранного текста на линии, мы заполняем массив линий, с которым и будем дальше работать. Мы проверяем соответствие линии, нашему регулярному выражению, и если они совпадают, мы создаем член с синтаксисом свойства, используя varname и typename в качестве параметров. После того синтаксис динамически создан, мы можем поместить его в документ.

Внимание: приведенный ниже код разделен для облегчения понимания

Dim line, originalCode As String
Dim lines() As String = Split(txt.Text, vbLf)
For Each line In lines
    line = line.Trim
    If Not line = "" Then
        Dim mtch As Match
        mtch = r.Match(line)
        If mtch.Success Then
            publicName = mtch.Groups("varname").Value.Trim
            dataType = mtch.Groups("typename").Value.Trim
            memberName = String.Concat("m", publicName)
            propertyProcedure = _
                String.Format("Public Property {1} As {2}{0}" _
                    & "    Get{0}" _
                    & "        Return {3}{0}" _
                    & "    End Get{0}" _
                    & "    Set(ByVal Value As {2}){0}" _
                    & "        {3} = Value{0}" _
                    & "    End Set{0}" _
                    & "End Property", vbCrLf, publicName, _
                    dataType, memberName)
            txt.Insert(vbCrLf & propertyProcedure)
        End If
    End If
Next

Пользовательский ввод:

Бывает возникает необходимость позволить пользователю решать некоторые аспекты в работе макроса. Чтобы продемонстрировать это в нашем макросе, мы создадим окно, в котором спросим пользователя о необходимости сортировки членов по алфавиту.

Dim sortAZ As MsgBoxResult
sortAZ = MsgBox("Sort Alphabetically", MsgBoxStyle.YesNo, "Sort Order")
If sortAZ = MsgBoxResult.Yes Then
System.Array.Sort(lines)
End If

Использование нашего макроса:

Итак мы создали свой макрос, круто правда? :) Теперь нам надо его использовать. Это можно сделать выделив текст который содержит имена свойств и типы переменных, и дважды кликнув на названии макро-метода в менеджере макросов. Кроме того можно назначить кнопку, например Alt-M заходим в Tools -> Options -> Environment -> Keyboard и назначаем Macros.MerlinMacros.Merlin.ConvertProperties сочетанию клавиш Alt-M

Немного вкусностей:

Есть такой продукт QuickCode .NET (http://www.dvxp.com/en/QuickCode.aspx ) который имеет несколько крутых фишек по использованию возможностей макросов. Правдо я быстро сталкнулся с ограничениями продукта, когда попробывал обработать более чем одну линию за раз, но тем немение он послужил причиной написания моего первого макроса.




Рубрика: Visual Studio




Инструменты Internet Explorer 8 Beta 2 для разработчиков.

Вебмастеру

В марте этого года мы уже писали об инструментах для разработчика в IE8 Beta 1, но IE8 Beta2 позволяет более полно использовать инструменты за счет значительных изменений в имеющихся функциях, а также новых возможностей. В принципе инструменты для разработчика должны обладать следующими свойствами: Быть интегрированными и простыми в использовании; Иметь визуальный интерфейсC их помощью можно быстро протестировать сайт.


Подробнее... | Рубрика: Вебмастеру | Добавлено: 05.09.2008

Google Developer Day 2008 в Москве.

Мероприятия

Дата проведения: 28 октября 2008 г.; Место проведения: Амбер Плаза, Москва, Россия. Конференция для веб-разработчиков и разработчиков мобильных приложений в Москве. Узнайте, как наилучшим образом использовать инструменты разработки и API от Google, чтобы создавать социальные, мобильные и картографические приложения, как использовать AJAX/JavaScript инструменты и библиотеки от Google и многое другое из первых уст.


Подробнее... | Рубрика: Мероприятия | Добавлено: 05.09.2008

ТОП 10 самых раздражающих факторов для программиста.

Разное

Совсем недавно наткнулся в интернете на забавный "хит-парад" наиболее раздражающих вещей для программиста. Поскольку он был на английском — решил перевести текст и несколько адаптировать к нашим реалиям…


Подробнее... | Рубрика: Разное | Добавлено: 03.09.2008

Остальные статьи:

Windows Server 7, 8 и 9
jQuery для JavaScript-программистов
Инновационный веб-броузер Google Chrome стартует уже сегодня
Windows 7: подход к производительности системы
Trac + Subversion @ Ubuntu: Revisited
[g]Vim в режиме Python: Рекомпиляция в Windows
Java + JSON. Пути к дружбе
Драйвер SQL Server 2005 для PHP
Типы данных в MySQL (сжатый справочник для PHP программиста)
PHP класс для работы с Яндекс.XML
Ошибки начинающих PHP разработчиков
Наследование шаблонов в Smarty
Особенности хранения сессий PHP в memcached
Internet Explorer 8 beta 2
9 правил для начинающего Ajax-разработчика
ExtJS 2.2 - полная поддержка Firefox 3, новые виджеты и другие нововведения


Цитата дня (все,добавить):



    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование

Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 76
Пользователей: 0