按名称访问动态对象属性

时间:2016-03-15 21:11:13

标签: c# .net c#-4.0 dynamic

我创建了这个动态对象,我想按名称访问属性:

dynamic obj = new ExpanadoObject();
obj.Name = "Reza";

我想要的是

obj["Name"] = "Reza";

var name = obj["Name"];

我该怎么做?

3 个答案:

答案 0 :(得分:4)

检查cast method的定义:

IDictionary<string, object>

如您所见,该类实现的其中一个接口是var dict = (IDictionary<string, object>)obj; dict["Name"] = "Reza"; var name = dict["Name"] as string; 。因此,你可以这样做:

ExpandoObject

请注意,如果您只需要访问元素字典样式的行为,则无需使用Dictionary<string,object>;普通{{1}}会做得很好。

答案 1 :(得分:2)

ExpandoObject实现IDictionary<string, object>,允许您执行以下操作:

dynamic obj = new ExpandoObject();

IDictionary<string, object> dictionary = obj;

dictionary["Name"] = "Reza";

var name = dictionary["Name"];

答案 2 :(得分:0)

TryGetValue 非常方便,由 IDictionary

提供
dynamic obj = new ExpandoObject();
IDictionary<string, object> dictionary = obj;
dictionary["Name"] = "Reza";
dict.TryGetValue("Name", out object name);