C# - 旧版本的字典<string,dynamic =“”>的替代?</string,>

时间:2013-08-03 22:54:24

标签: c# dynamic dictionary .net-3.5

我正在尝试实现一个模板类,它接受模板ID和包含所需对象的Dictionary。


e.g。

public string GenerateMessage(string messageID, Dictionary<string, dynamic> values)
{
    string gameMessage = gameMessages[messageID];

    var template= new StringTemplate(gameMessage);
    foreach (var value in values)
    {
        template.SetAttribute(value.Key, value.Value);
    }
    return template.ToString();

}

用法示例

var values = new Dictionary<string, dynamic>();
values.Add("city", london) // instance of City
values.Add("country", uk) // instance of Country
values.Add("user", user) // instance of User
string message = GenerateMessage("ID123", values);

不幸的是我使用的是Unity,它只支持.NET 3.5的一个子集,它不包含动态!


我真的不希望有一个Dictionary<string, string>,我必须指定我需要的所有值,我想提供模板引用整个对象,以便我可以更改模板周围更灵活。


有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不知道gameMessageStringTemplate是什么,但是,也许你可以使用generics

public string GenerateMessage<T>(string messageID, Dictionary<string, T> values)
{
    string gameMessage = gameMessages[messageID];

    var template = new StringTemplate(gameMessage);
    foreach (var value in values)
    {
        template.SetAttribute(value.Key, value.Value);
    }
    return template.ToString();
}