0

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は設定されていないようです。何か案は?

4

1 に答える 1