我正在使用字符串模板来呈现一些内容,但内容可能是变量,因此不确定如何传递(使用.net / c#)
基本思路是我有一个List>需要最终作为参数,例如
List<KeyValuePair<string, object>> ret = new List<KeyValuePair<string, object>>();
ret.Add(new KeyValuePair<string, object>("elem1", true));
ret.Add(new KeyValuePair(string, object>("elem2", false));
现在我希望这些在字符串模板中显示为:
$ $ item.elem1 $ $ item.elem2
我可以让它们为$ elem1 $或$ elem2 $但我需要它们在一个结构中。所以我实际上需要说服我传入一个带有属性elem1和elem2的对象的字符串模板setAttribute,而实际上我有一个KeyValuePairs列表。
由于
答案 0 :(得分:4)
实际上,一个非常小的重写应该有效。您需要使用字典,甚至可以嵌套它们(使用ST 3.2):
[Test]
public void When_Building_Text_With_A_Dictionary_As_The_Attributes_It_Should_Map_Members_To_Keys()
{
IDictionary<string, object> ret = new Dictionary<string, object>();
ret["elem1"] = true;
ret["elem2"] = false;
var nestedObj = new Dictionary<string, object>();
nestedObj["nestedProp"] = 100;
ret["elem3"] = nestedObj;
var template = new StringTemplate("$elem1$ or $elem2$ and value: $elem3.nestedProp$");
template.Attributes = ret;
StringBuilder sb = new StringBuilder();
StringWriter writer = new StringWriter(sb);
template.Write(new NoIndentWriter(writer));
writer.Flush();
var renderedText = sb.ToString();
Assert.That(renderedText, Is.EqualTo("True or False and value: 100"));
}
我和一位同事正在寻找复制STST(ST Standalone Tool)的功能,它使用json作为属性,我们构建了一个简单的JObject到字典转换器,我可以发布该代码和一个例子,如果它是任何用到你,它只有~20行。
答案 1 :(得分:0)
ExpandoObject的成员可以在运行时动态添加和删除。