DotLiquid - 字典 <string,string> 作为参数

DotLiquid - Dictionary<string,string> as parameter

假设我有以下模板:

Hi {{ name }}! Welcome back to {{ blog }}. Last log-in date: {{ date }}.

允许用户输入模板和 placeholders/variables,所以我无法判断占位符会是什么样子。

我正在考虑创建这样的东西:

public string Render(string text, Dictionary<string,string> placeholders)
{
    Template template = Template.Parse(text);
    return template.Render(Hash.FromSomething(placeholders));
}

有一个名为 FromDictionary 的方法接受字典,我不太明白它是如何工作的。另一种选择是 FromAnonymousObject,但我不知道如何将 Dictionary 转换为匿名对象以符合目的。

如有任何想法,我们将不胜感激!

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));
}

(我在没有编译的情况下将其输入到 SO 中,如果有错误,我们深表歉意。让我知道,我会更新答案。)