C# C“动态-”;RuntimeBinderException“;
我正在使用ExpandoObject初始化dynamic并向其中添加一些项C# C“动态-”;RuntimeBinderException“;,c#,c#-4.0,dynamictype,C#,C# 4.0,Dynamictype,我正在使用ExpandoObject初始化dynamic并向其中添加一些项 dynamic dy = new System.Dynamic.ExpandoObject(); dy.Property2 = new List<string>(); dy.Property2.Add("Two"); dy.Property2.Insert(0, "Zero"); var coll1 = (List<stri
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);
“System.Collections.Generic.List”不包含“ElementAt”的定义,这是绝对正确的-
List
没有ElementAt
方法。它只适用于原始代码,因为它是IEnumerable
上的扩展方法。动态类型不允许使用“特殊”语法调用扩展方法,但可以将其作为普通静态方法调用调用:
var data = Enumerable.ElementAt(dy.Property2, 0);
在MSDN for dynamic上写着“类型是静态类型,但类型为dynamic的对象会绕过静态类型检查。在大多数情况下,它的功能就像它有类型对象一样”你能解释一下吗,需要理解吗???@slashshogdhe:不是在注释线程中,不。关于
动态(我在C#Depth中写了整整一章)-在评论中详细说明确实不合适。提出了一个关于stackoverflow的问题,请立即提供帮助。
var data = Enumerable.ElementAt(dy.Property2, 0);