2010-03-25 121 views
0

我開始使用StringTemplate的首次,而我堅持試圖找出如何讓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(); 

這裏的問題......如果在(it.is_type)工作正常,和文章/ type.st完美的作品。然而,當我通過一個目的是爲「元素」的價值屬性我得到這個錯誤:

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

所以 - 我的問題是,我如何訪問屬性/對象的領域,使用StringTemplate的對象內?

回答

1

看來,StringTemplate的不支持:

public string name { get; set; } 

當我轉換這:

public string name; 

它的工作就好了...所以現在我的元素可以嵌套通過。

+0

確切地說,這是悲傷雖然:( – 2015-11-13 14:44:12