有一个包含值的词典。它需要将每个值分配给动态实例属性。动态变量属性的名称应该与字典的键相同。 像这样:
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循环,每次如何描述动态实例属性名称?谢谢。
答案 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
。它可能不会在隔离方面产生巨大的差异,但如果你经常使用这种方法,它可能会提高整体性能,因为索引器将在编译时绑定而不是在运行时绑定。