我有一本字典
Dictionary<string, object> dict;
我通过输入
从中获取价值string foo = dict["foo"].ToString();
字典是序列化的JSON结果。
serializer.Deserialize<Dictionary<string, object>>(HttpContext.Current.Request["JSON"]);
我想知道如果他们将它转换为对象的方式,所以我可以输入类似的内容:
string foo = dict.foo;
由于
答案 0 :(得分:2)
如果您不知道字典的确切成员,可以使用dynamic
获得一个漂亮的语法,如下所示。但是,如果您知道字典的成员和类型,then you could create your own class并自己进行转换。可能存在一个自动执行此操作的框架。
using System;
using System.Collections.Generic;
using System.Text;
using System.Dynamic;
namespace DynamicTest
{
public class DynamicDictionary : DynamicObject
{
Dictionary<string, object> dict;
public DynamicDictionary(Dictionary<string, object> dict)
{
this.dict = dict;
}
public override bool TrySetMember(SetMemberBinder binder, object value)
{
dict[binder.Name] = value;
return true;
}
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
return dict.TryGetValue(binder.Name, out result);
}
}
class Program
{
static void Main(string[] args)
{
dynamic foo = new DynamicDictionary(new Dictionary<string, object> { { "test1", 1 } });
foo.test2 = 2;
Console.WriteLine(foo.test1); // Prints 1
Console.WriteLine(foo.test2); // Prints 2
}
}
}