gpt4 book ai didi

c# - 无法转换类型为 'System.Linq.OrderedEnumerable` 的对象 2[*** ]' to type ' System.Collections.Generic.IEnumerable`1[***]'

转载 作者:太空宇宙 更新时间:2023-11-03 21:45:48 25 4
gpt4 key购买 nike

我有一个继承自 Token 类的对象 DirectoryToken。在我的代码中,我有一个 GetValues 方法,它接受一个标记列表,并根据标记对象中包含的信息将列表中每个项目的值放在一起。

//NameTokens is an object of type **List<DirectoryToken>**
List<String> PathValues = GetValues((IEnumerable<Token>)settings.DirectoryDefinition.**NameTokens**.OrderBy(x => x.Index));


private List<String> GetReportValues(IEnumerable<Token> TokenList)
{

}

我注意到,当我在一台机器(Windows 7、.NET 3.5)上运行代码时,它运行良好。但是,当我将构建的 msi 移动到另一台机器并尝试运行相同的测试时,我收到以下错误消息。

Unable to cast object of type 'System.Linq.OrderedEnumerable2[DirectoryToken,System.Int32]' to type 'System.Collections.Generic.IEnumerable1[Token]'.

我不认为更改代码是解决此问题的正确方法。任何建议这个问题可能来自什么,也许我可以将我的 3.5 更新到什么版本,以解决这个问题?

最佳答案

您正在尝试转换 DirectoryToken 的集合到 Token 的集合.

这称为协变 转换,它仅在 .Net 4.0 或更高版本中受支持。

如无法升级,可调用.Cast<Token>()创建一个新的 IEnumerable<T>将每个对象转换为所需类型的实例(实际上是一个迭代器)。

在任何情况下都不需要显式转换操作。

关于c# - 无法转换类型为 'System.Linq.OrderedEnumerable` 的对象 2[*** ]' to type ' System.Collections.Generic.IEnumerable`1[***]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17071731/

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