Rez*_*eza 5 .net c# dynamic c#-4.0
我已经创建了这个动态对象,我想按名称访问属性:
dynamic obj = new ExpanadoObject();
obj.Name = "Reza";
Run Code Online (Sandbox Code Playgroud)
我想要的是
obj["Name"] = "Reza";
Run Code Online (Sandbox Code Playgroud)
或者
var name = obj["Name"];
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
检查 的定义ExpandoObject:
Run Code Online (Sandbox Code Playgroud)public sealed class ExpandoObject : IDynamicMetaObjectProvider, IDictionary<string,?object>, ICollection<KeyValuePair<string,?object>>, IEnumerable<KeyValuePair<string,?object>>, IEnumerable, INotifyPropertyChanged
如您所见,该类实现的接口之一是IDictionary<string,?object>. 因此,你可以这样做:
var dict = (IDictionary<string,?object>)obj;
dict["Name"] = "Reza";
var name = dict["Name"] as string;
Run Code Online (Sandbox Code Playgroud)
请注意,如果您只需要访问字典样式元素的行为,则不需要使用ExpandoObject;一个平原Dictionary<string,object>就可以了。