gpt4 book ai didi

c# - 按名称访问动态对象属性

转载 作者:行者123 更新时间:2023-11-30 14:26:13 24 4
gpt4 key购买 nike

我已经创建了这个动态对象,我想通过名称访问属性:

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

我想要的是

obj["Name"] = "Reza";

var name = obj["Name"];

我该怎么做?

最佳答案

检查 ExpandoObject 的定义:

public sealed class ExpandoObject : IDynamicMetaObjectProvider, 
IDictionary<string, object>, ICollection<KeyValuePair<string, object>>,
IEnumerable<KeyValuePair<string, object>>, IEnumerable, INotifyPropertyChanged

如您所见,该类实现的接口(interface)之一是IDictionary<string, object>。 .因此,您可以这样做:

var dict = (IDictionary<string, object>)obj;
dict["Name"] = "Reza";
var name = dict["Name"] as string;

请注意,如果您需要的只是访问字典式元素的行为,请使用 ExpandoObject没有必要;一个普通的Dictionary<string,object>会做的很好。

关于c# - 按名称访问动态对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36022229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com