相关疑难解决方法(0)

为什么我不能索引到ExpandoObject?

今天在研究C#动态时,有些东西让我感到惊讶(我从未使用过它们,但最近我一直在试验Nancy web框架).我发现我不能这样做:

dynamic expando = new ExpandoObject();

expando.name = "John";

Console.WriteLine(expando["name"]);
Run Code Online (Sandbox Code Playgroud)

最后一行抛出异常:

无法将[]索引应用于"System.Dynamic.ExpandoObject"类型的表达式

我理解错误信息,但我不明白为什么会这样.我查看了ExpandoObject的文档,它显式实现IDictionary<,>,因此有一个this.[index]方法(MSDN).为什么我不能打电话给它?

当然,没有什么可以阻止我ExpandoObject手动向下翻译到字典然后索引到它,但这种方式无视这一点; 它也没有解释Expando如何能够隐藏其中一个接口的方法.

这里发生了什么?

c# dynamic expandoobject

34
推荐指数
1
解决办法
9077
查看次数

将属性添加到ExpandoObject,其名称与字符串相同

有没有办法将属性添加到与字符串值同名的ExpandoObject?

例如,如果我有:

string propName = "ProductNumber";
dynamic obj = new System.Dynamic.ExpandoObject();
Run Code Online (Sandbox Code Playgroud)

我可以创建属性ProductNumber,如:

obj.ProductNumber = 123;
Run Code Online (Sandbox Code Playgroud)

但是,我可以obj.ProductNumber根据字符串创建属性propName吗?所以,如果我不知道该属性的名称将是什么,我可以根据此输入创建它.如果使用ExpandoObject无法做到这一点,那么我应该研究C#的其他任何领域?

c# dynamic expandoobject

26
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×2

dynamic ×2

expandoobject ×2