Переменная StringTemplate со свойствами объекта - PullRequest
0 голосов
/ 25 марта 2010

Я начинаю использовать StringTemplate впервые, и застрял, пытаясь выяснить, как заставить StringTemplate сделать что-то вроде следующего:

article.st

$elemenets:article/elements()$

товар / elements.st

$if($it.is_type)$ $it:article/type()$
$elseif($it.is_type2)$ $it:article/type2()$
// also tried: $it.value:article/type2()$, same result
$endif$

товар / type.st

<type>$it.value$</type>

товар / type2.st

<h1>$it.value.title</h1>
<type2>$it.value.text</type2>

Program.cs

StringTemplateGroup group = new StringTemplateGroup("article", "Templates");
StringTemplate template = group.GetInstanceOf("Article");
template.SetAttribute("elements", new Element() { is_type = true, value = "<p>Hello Text</p>" });
template.SetAttribute("elements", new Element() { is_type2 = true, value = new { title = "Type 2 Title", text = "Type2 Text" } });
return template.ToString();

Проблема в том, что ... if (it.is_type) работает нормально, а article / type.st работает отлично. Однако, когда я передаю объект в свойство value для «Element», я получаю эту ошибку:

Class ClassName has no such attribute: text in template context [Article article/element elseif(it.is_type2)_subtemplate article/type2]

Итак, мой вопрос: как мне получить доступ к свойствам / полям объекта внутри объекта с помощью StringTemplate?

1 Ответ

1 голос
/ 26 марта 2010

Похоже, что StringTemplate не поддерживает:

public string name { get; set; }

Когда я преобразовал это в:

public string name;

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

...