繁体   English   中英

C#动态-“ RuntimeBinderException”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM