我对C#相当新,但我希望将对象转换为无符号短裤数组。原始数据是作为对象传递的WORD数组(数值WORD)。我尝试过以下操作,但一直出错。
object temp = Agent.Port("PumpPressure1_01").Value;
ushort[] PP1_01 = ((IEnumerable)temp).Cast<object>()
.Select(x => x == null ? x.ToUshort())
.ToArray();
当我运行时,我收到以下错误:
'System.Collections.Generic.IEnumerable<T>' requires '1' type arguments.
我收到上述错误时使用的命名空间是:
using System.Linq;
using System.Text; // Don't think this is required but added it in case
如果我添加以下命名空间:
using System.Collections;
using System.Collections.Generic;
我收到以下错误。
'System.Linq.ParalleIEnumerable.Select<TTSource,TResult>()' is not supported by the language
我确定这是一个显而易见的问题,但我已经在网上找了一段时间而无法找到解决方案。我最好的猜测是Select
函数不正确,因为它最初设计用于将对象转换为字符串数组。
任何帮助都会很棒。
谢谢
答案 0 :(得分:0)
IEnumerable是一个通用接口,所以你必须声明你正在使用的数据类型......
说实话,我想查看对
的调用object temp = Agent.Port("PumpPressure1_01").Value;
实际上正在返回 - 通过在调试器中检查它...如果它只是返回对数字类型数组的引用,你应该能够简单地转换它。你正在做的是尝试在数组中强制转换每个单独的项目 - 我怀疑这不是你应该做的 - 这将是自己投射数组。
您能否在Agent对象上为Port方法提供任何API文档,以便我可以看到它返回的意义?你可以尝试检查,看看它给你带来了什么吗?
答案 1 :(得分:0)
如果您的IEnumerable
变量已经是object
类型,那么为什么要转换为temp
,然后再将其转发回object
?
IEnumerable<T>
也是一个通用接口,必须指定确切的类型(例外情况也是如此)。如果你有一个整数数组,并且你想使用它们,它应该是IEnumerable<int>
答案 2 :(得分:0)
感谢所有的帮助和反馈。
不幸的是,我没有足够重视发布的警告,这些警告似乎导致了这个问题。
"type": "mood",
"terms": [
{ "name": "happy" },
{ "name": "angry" },
{ "name": "sad" },
{ "name": "relaxing" },
{ "name": "excited" }
似乎.NET引用存在一些问题。我有另一个VM,我测试了以下解决方案,它似乎没有问题。看起来我将不得不重新安装软件包,以使其在我想要使用的VM上工作。
我正在使用的软件包是一个自定义程序包,它使用C#构建解决方案,其中预构建的类看起来像即插即用块。您可以将块从一个块的输入/输出连接到另一个块。然后,您可以在块内部构建C#代码。基本上c#就像我一样虚拟..
块的示例:
至于代码,我确实需要做如下的一些更改,但现在有效。 Agent.Port(“PumpPressure1_01”)。Value.RawValue用于引用块上的特定端口。
Warning: Reference to type 'System.Func '2' claims it is defined in 'c:\Windows\Microsoft.NET\Framework64\v2.0.50727mscorlib.dll'. but it could not be found
再次感谢所有的帮助。现在只需要解决库引用的问题。