我正在寻找一种方法来实现如下功能:
myFunction({"Key", value}, {"Key2", value});我相信有一些匿名类型的东西是非常容易的,但我没有看到它。
我能想到的唯一解决方案是有一个params KeyValuePair<String, object>[] pairs参数,但最终结果类似于:
myFunction(new KeyValuePair<String, object>("Key", value),
new KeyValuePair<String, object>("Key2", value));无可否认,这要丑陋得多。
编辑:
为了清楚起见,我正在编写一个在两个不同系统之间传递的Message类。它包含一个指定消息类型的ushort,以及一个用于与消息关联的“数据”对象的字符串字典。我希望能够在构造函数中传递所有这些信息,所以我可以这样做:
Agent.SendMessage(new Message(MessageTypes.SomethingHappened, "A", x, "B", y, "C", z));或类似的语法。
发布于 2009-08-23 22:20:11
使用字典:
myFunction(new Dictionary<string, object>(){
{"Key", value},
{"Key2", value}});简单地说,您只需要一个new Dictionary<K, V>,而不是每个参数。获取键和值很简单。
或使用匿名类型:
myFunction(new {
Key = value,
Key2 = value});在函数内部使用它不是很好,你需要反射。这看起来像这样:
foreach (PropertyInfo property in arg.GetType().GetProperties())
{
key = property.Name;
value = property.GetValue(arg, null);
}(直截了当地说,可能有一些错误……)
https://stackoverflow.com/questions/1319708
复制相似问题