C#-字典的替代方案<;字符串,动态>;对于旧版本?
我正在尝试实现一个模板类,它接受一个模板ID和一个包含所需对象的字典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
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();
}