我创建了这个动态对象,我想按名称访问属性:
dynamic obj = new ExpanadoObject();
obj.Name = "Reza";
我想要的是
obj["Name"] = "Reza";
或
var name = obj["Name"];
我该怎么做?
答案 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);