gpt4 book ai didi

C# 动态 - "RuntimeBinderException"

转载 作者:行者123 更新时间:2023-12-01 19:31:28 27 4
gpt4 key购买 nike

我正在使用 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);

异常(exception)是“System.Collections.Generic.List”不包含“ElementAt”的定义

最佳答案

这是绝对正确的 - List<T> 没有ElementAt方法。它仅适用于您的原始代码,因为它是 IEnumerable<T> 上的扩展方法。动态类型不允许您使用“特殊”语法调用扩展方法 - 但您可以将其作为普通的静态方法调用来调用:

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

关于C# 动态 - "RuntimeBinderException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25120849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com