将值从Dictionary分配给动态对象C#

时间:2017-01-31 14:59:13

标签: c# .net dictionary dynamic

有一个包含值的词典。它需要将每个值分配给动态实例属性。动态变量属性的名称应该与字典的键相同。 像这样:

dynamic response = new ExpandoObject();
var dict = new Dictionary<string, string>();
string s;
dict.TryGetValue("Name", out s); // imagine dictionary contains some data
response.Name = s;
dict.TryGetValue("Street", out s);
response.Street = s;
....

我确信有一些更有效的方法,然后迭代每个值。如果要创建for循环,每次如何描述动态实例属性名称?谢谢。

1 个答案:

答案 0 :(得分:2)

ExpandoObject实施IDictionary<string, object>,因为它是如何存储&#34;属性&#34;值,所以你可以这样做:

var response = new ExpandoObject();
var dict = new Dictionary<string, string>();
// imagine dict contains some data
foreach(var kvp in dict)
{
     (response as IDictionary<string, object>)[kvp.Key] = kvp.Value;
}

请注意,由于您未动态访问dynamic属性,因此我未在此处使用ExpandoObject。它可能不会在隔离方面产生巨大的差异,但如果你经常使用这种方法,它可能会提高整体性能,因为索引器将在编译时绑定而不是在运行时绑定。