sla*_*dhe 2 c# c#-4.0 dynamictype
我正在使用ExpandoObject初始化动态并向其添加一些项目.
dynamic dy = new System.Dynamic.ExpandoObject();
dy.Property2 = new List<string>();
dy.Property2.Add("Two");
dy.Property2.Insert(0, "Zero");
var coll1 = (List<string>)dy.Property2;
var element = coll1.ElementAt(0);
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常.但如果用下面提到的代码替换最后两个语句,则抛出异常
var data = dy.Property2.ElementAt(0);
Run Code Online (Sandbox Code Playgroud)
异常是'System.Collections.Generic.List'不包含'ElementAt'的定义
而且它的绝对正确的- List<T> 不具有的ElementAt方法.它只适用于您的原始代码,因为它是一个扩展方法IEnumerable<T>.动态类型不允许使用"特殊"语法调用扩展方法 - 但您可以将其称为常规静态方法调用:
var data = Enumerable.ElementAt(dy.Property2, 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1733 次 |
| 最近记录: |