如何将动态对象转换为 Dictionary<TKey, TValue>
在 C# 中我能做什么?
public static void MyMethod(object obj)
{
if (typeof(IDictionary).IsAssignableFrom(obj.GetType()))
{
// My object is a dictionary, casting the object:
// (Dictionary<string, string>) obj;
// causes error ...
}
else
{
// My object is not a dictionary
}
}
最佳答案
上面的答案都很酷。我发现用 json 序列化对象并反序列化为字典很容易。
var json = JsonConvert.SerializeObject(obj);
var dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
我不知道性能是如何受到影响的,但这更容易阅读。您也可以将它包装在一个函数中。
public static Dictionary<string, TValue> ToDictionary<TValue>(object obj)
{
var json = JsonConvert.SerializeObject(obj);
var dictionary = JsonConvert.DeserializeObject<Dictionary<string, TValue>>(json);
return dictionary;
}
像这样使用:
var obj = new { foo = 12345, boo = true };
var dictionary = ToDictionary<string>(obj);
关于c# - 如何在 C# 中将对象转换为 Dictionary<TKey, TValue>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11576886/