让我们假设我有以下模板:
嗨{名字}}!欢迎回到{ blog }}。最后登录日期:{日期}。
用户可以同时输入模板和占位符/变量,所以我无法知道占位符会是什么样子。
我想要创造这样的东西:
public string Render(string text, Dictionary<string,string> placeholders)
{
Template template = Template.Parse(text);
return template.Render(Hash.FromSomething(placeholders));
}有一种叫做FromDictionary的方法可以接受字典,我不太明白它是如何工作的。另一个选择是FromAnonymousObject,但我不知道如何将字典转换为一个匿名对象以满足这个目的。
任何想法都将不胜感激!
发布于 2015-01-12 10:27:30
Hash.FromDictionary确实是您想要的方法。我认为你非常接近答案--你只需要把你的Dictionary<string, string>转换成Dictionary<string, object>。(这些值是object,因为除了原始类型之外,还可以在其中包含嵌套对象。)
public string Render(string text, Dictionary<string,string> placeholders)
{
Template template = Template.Parse(text);
Dictionary<string, object> convertedPlaceholders =
placeholders.ToDictionary(kvp => kvp.Key, kvp => (object) kvp.Value);
return template.Render(Hash.FromDictionary(convertedPlaceholders));
}(我在没有编译的情况下就把它输入了,所以如果有错误,请原谅。告诉我,我会更新答案。)
https://stackoverflow.com/questions/27860999
复制相似问题