[英]C# Dynamic - “RuntimeBinderException”
我正在使用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);
例外是“ System.Collections.Generic.List”不包含“ ElementAt”的定义
绝对正确ElementAt
List<T>
没有 ElementAt
方法。 它仅在原始代码中有效,因为它是IEnumerable<T>
的扩展方法。 动态类型不允许您使用“特殊”语法调用扩展方法-但您可以将其作为常规的静态方法调用来调用:
var data = Enumerable.ElementAt(dy.Property2, 0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.