C#-字典的替代方案<;字符串,动态>;对于旧版本?

C#-字典的替代方案<;字符串,动态>;对于旧版本?,c#,dynamic,dictionary,.net-3.5,C#,Dynamic,Dictionary,.net 3.5,我正在尝试实现一个模板类,它接受一个模板ID和一个包含所需对象的字典 e、 g 公共字符串生成消息(字符串消息ID、字典值) { 字符串gameMessage=gameMessages[messageID]; var template=新的StringTemplate(gameMessage); foreach(值中的var值) { SetAttribute(value.Key,value.value); } 返回模板.ToString(); } 用法示例 var values = new

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


e、 g

公共字符串生成消息(字符串消息ID、字典值)
{
字符串gameMessage=gameMessages[messageID];
var template=新的StringTemplate(gameMessage);
foreach(值中的var值)
{
SetAttribute(value.Key,value.value);
}
返回模板.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);
var values=newdictionary();
values.Add(“城市”,伦敦)//城市实例
values.Add(“国家”,英国)//国家实例
values.Add(“user”,user)//用户实例
字符串消息=生成消息(“ID123”,值);

不幸的是,我使用的是Unity,它只支持.NET3.5的一个子集,其中不包括dynamic


我真的不想有一个
字典
,在那里我必须指定我需要的所有值,我想提供对整个对象的模板引用,以便它们可以使用,我可以更灵活地更改模板



有什么想法吗

我不知道什么是
gameMessage
StringTemplate
,但是,也许您可以使用:

公共字符串生成消息(字符串消息ID、字典值)
{
字符串gameMessage=gameMessages[messageID];
var template=新的StringTemplate(gameMessage);
foreach(值中的var值)
{
SetAttribute(value.Key,value.value);
}
返回模板.ToString();
}

谢谢您的回复!这是否意味着我可以用不同类的实例填充
字典值
?或者这是否仍然将
限制为一个类,例如
字典
?@RadiantHex:您可以将其用于任何类型(您可以指定)。但是是的,值的类型必须是相同的类型,不能混合。但是,您可以将其与
对象一起使用。伪代码:
GenerateMessage(“1”,新字典())谢谢你让它更清晰!我已经看到了一些使用
对象的示例,但没有太多解释,也没有解释它与使用动态对象的区别。我想这里面有一些陷阱?谢谢!这正是我想要的!:)
StringTemplate.SetAttribute
看起来像什么?这就是这个问题的核心:如何使用这些
动态
值?
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);
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();
}