具有对象属性的 StringTemplate 变量

发布于 2024-08-26 05:38:18 字数 1332 浏览 7 评论 0原文

我第一次开始使用 StringTemplate,并且一直在尝试弄清楚如何让 StringTemplate 执行如下操作:

/

$elemenets:article/elements()$

elements.starticle

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

/type.starticle

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

/type2.stprogram.cs

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

article.starticle

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 工作完美。但是,当我将对象传递给“Element”的 value 属性时,我收到此错误:

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

所以 - 我的问题是,如何使用 StringTemplate 在对象内访问对象的属性/字段?

I am starting to use StringTemplate for the first time, and am stuck trying to figure out how to get StringTemplate to do something like the following:

article.st

$elemenets:article/elements()$

article/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$

article/type.st

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

article/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();

Problem here is ... the if(it.is_type) works fine, and the article/type.st works perfectly. However, when I pass an object to the value property for 'Element' I get this error:

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

So - my question is, how do i access the properties/fields of an object, within an object using StringTemplate?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

﹎☆浅夏丿初晴 2024-09-02 05:38:18

似乎 StringTemplate 不支持:

public string name { get; set; }

当我将其转换为:

public string name;

它工作得很好......所以现在我的元素可以嵌套。

Appears that StringTemplate does not support:

public string name { get; set; }

When I converted this to:

public string name;

It worked just fine ... so now my elements can nest through.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文