C#Dynamic - “RuntimeBinderException”

时间:2014-08-04 14:18:09

标签: 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);

上面的代码工作正常。但如果使用下面的代码

替换最后两个语句,则抛出异常
        var data = dy.Property2.ElementAt(0);

异常是&#39; System.Collections.Generic.List&#39;不包含&#39; ElementAt&#39;

的定义

1 个答案:

答案 0 :(得分:5)

并且它绝对正确 - List<T> 没有拥有ElementAt方法。它仅适用于原始代码,因为它是IEnumerable<T>上的扩展方法。动态输入不允许您使用&#34;特殊&#34;来调用扩展方法。语法 - 但您可以将其称为常规静态方法调用:

var data = Enumerable.ElementAt(dy.Property2, 0);