繁体   English   中英

在StringTemplate4(C#)中执行迭代

[英]perform iteration in StringTemplate4 (C#)

在StringTemplate4备忘单( http://www.antlr.org/wiki/display/ST/StringTemplate+cheat+sheet )中,它提到了执行迭代

<attribute:{anonymous-template}>
Apply an anonymous template to each element of attribute. The iterated `it` attribute is set automatically.

我尝试了以下代码:

        List<TextParseTests.TestModel> data = new List<TextParseTests.TestModel>();
        for (int i = 0; i < 10; i++)
        {
            TextParseTests.TestModel model2 = new TextParseTests.TestModel();
            model2.Name = i.ToString();
            data.Add(model2);
        }


        string template = @"TestTemplate|| <List:{ [DataList <it.Name>]  }> [END]";

        Template t = new Template(template);
        t.Add("List", data.ToArray());


        var result = t.Render();
        sb.AppendLine(result);

更新1

下面是TestModel数据结构和相关的类。 我正在使用这些

    public class ContactDetailsTest
    {
        public string Email { get; set; }
        public string Address1 { get; set; }
    }

    public class TestModel
    {
        public string Name { get; set; }
        public string Surname { get; set; }
        public ContactDetailsTest ContactDetails { get; set; }

        public TestModel()
        {
            this.ContactDetails = new ContactDetailsTest();
        }
    }

但是最终结果是:

"TestTemplate||  [DataList ]   [DataList ]   [DataList ]   [DataList ]   [DataList ]   [DataList ]   [DataList ]   [DataList ]   [DataList ]   [DataList ]   [END]"

它确实被迭代了10次,但是it似乎没有被填充。 有任何想法吗?

您需要将模板更改为此

TestTemplate|| <List:{x | [DataList <x.Name>]  }> [END]

截至本文档

<attribute:{x | anonymous-template}>
Apply an anonymous template to each element of attribute.  
The iterated value is set to argument x. 
The anonymous template references <x> to access the iterator value.

您可以将x设置为任意值,它只是迭代器的占位符。

问题是您使用的是StringTemplate3备忘单,而不是StringTemplate4备忘单http://www.antlr.org/wiki/display/ST4/StringTemplate+cheat+sheet

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM