我注意到具有必需和方法的新ExpandoObject工具因此应该可以使用集合初始化语法以与向字典添加项目相同的方式向expando对象添加属性.IDictionary<string,object>IEnumerable<KeyValuePair<string, object>>Add(string, object)
Dictionary<string,object> dict = new Dictionary<string,object>()
{
{ "Hello", "World" }
};
dynamic obj = new ExpandoObject()
{
{ "foo", "hello" },
{ "bar", 42 },
{ "baz", new object() }
};
int value = obj.bar;
Run Code Online (Sandbox Code Playgroud)
但似乎没有办法做到这一点.错误:
'System.Dynamic.ExpandoObject'不包含'添加'的定义
我认为这不起作用,因为接口是明确实现的.但有没有办法解决这个问题?这工作正常,
IDictionary<string, object> exdict = new ExpandoObject() as IDictionary<string, object>();
exdict.Add("foo", "hello");
exdict.Add("bar", 42);
exdict.Add("baz", new object());
Run Code Online (Sandbox Code Playgroud)
但是集合初始化器语法更整洁.