+7 (495) 229-0436   shopadmin@itshop.ru 119334, г. Москва, ул. Бардина, д. 4, корп. 3
 
 
Вход
 
 
Каталог
 
 
Подписка на новости
Новости ITShop
Windows 7 и Office: Новости и советы
Обучение и сертификация Microsoft
Вопросы и ответы по MSSQLServer
Delphi - проблемы и решения
Adobe Photoshop: алхимия дизайна
 
Ваш отзыв
Оцените качество магазина ITShop.ru на Яндекс.Маркете. Если вам нравится наш магазин - скажите об этом Google!
 
 
Способы оплаты
 
Курс расчета
 
 1 у.е. = 92.51 руб.
 
 Цены показывать:
 
 
 
 
  
Новости, статьи, акции
 

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

09.08.2012 16:33

Загрузить примеры - 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 ) который имеет несколько крутых фишек по использованию возможностей макросов. Правдо я быстро сталкнулся с ограничениями продукта, когда попробывал обработать более чем одну линию за раз, но тем немение он послужил причиной написания моего первого макроса.

Ссылки по теме

  
Помощь
Задать вопрос
 программы
 обучение
 экзамены
 компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты

Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 
Бестселлеры
Курсы обучения "Atlassian JIRA - система управления проектами и задачами на предприятии"
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2019. Все языки. Электронный ключ
Курс "Oracle. Программирование на SQL и PL/SQL"
Курс "Основы TOGAF® 9"
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Курс "Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации"
 

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям.

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.



 

О нас

 
Главная
Каталог
Новинки
Акции
Вакансии
 

Помощь

 
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 

Способы оплаты

 

Проекты Interface Ltd.

 
Interface.ru   ITShop.ru   Interface.ru/training   Olap.ru   ITnews.ru  
 

119334, г. Москва, ул. Бардина, д. 4, корп. 3
+7 (495) 229-0436   shopadmin@itshop.ru
Проверить аттестат
© ООО "Interface Ltd."
Продаем программное обеспечение с 1990 года