И так, я рассказал об основных приемах использования StringTemplate. В качестве завершения, хочу остановится на работе со словарем, условиями и циклами в шаблонах. Для начала, нужно запомнить таблицу разрешения имен:
Поиск значения переменных
Предусмотрен следующий порядок получения параметров:
- C# свойство (т.е. неиндексированных CLR Property) с именем name
- Метод под названием get_name ()
- Метод под названием GetName ()
- Метод под названием Isname ()
- Метод под названием GetName ()
- Метод под названием isname ()
- Поле (field) с именем name
- C # индексатор (например, CLR indexed property), которая принимает единственный параметр строка — это [«name»]
Так как таблица большая, это дает некоторые удобства в использовании, но значительно замедляет парсинг. По этому, всегда предусматривайте кеширование.
Доступ к элементам словаря
Все довольно просто со списками и «итерируемыми» элементами:
$list:{key|<div>$key.Title$</div>}$
А вот итерация по словарю, может показаться не такой уж элементарной (по крайне мере, я искал решение в интернете). Трюк заключается в использовании итератора Keys:
$dict.keys:{k| <div>$k$ - ($dict.(k)$)</div>}$
Операторы списков
Не знаю, как назвать этот раздел. Речь пойдет о методах списка (часттично LINQ — хотя не уверен) типа Count, First, Last и тд. Обычный доступ к методу Count просто выкинет ошибку, чтобы получить количество элементов предусмотрен одноименный оператор length, а вызов выглядит так:
$length(list)$
Заключение
Надеюсь, эти три части будут хорошим началом для изучения StringTemplate. Нетронутыми осталось еще несколько частей:
- Отладка (StringTemplateTreeView).
- Изменение лексеров — использование тэгов, вместо знака ‘$’ (AngleBracketLexer).
- Фильтры завершения — упаковка, форматирование (StringTemplateTreeView).
- Пользовательское отображение объектов (IAttributeRenderer)и формат.
Метки:C#, OpenSource, Template
Похожие статьи
- 19 сентября 2010 -- StringTemplate на C#. (Часть 1) (0)
- 4 февраля 2009 -- LINQ Insert or Update еще одно решение. (2)
- 12 января 2012 -- Генерация строк перебором букв. (4)
- 19 октября 2008 -- Названия свечей для EURUSD (2)
- 27 ноября 2009 -- ASP.NET пейджинг. (Paging in ASP.NET) (3)