可以';t枚举C#中的F#列表
本文关键字:中的 列表 枚举 可以 | 更新日期: 2023-09-27 18:05:49
在下面的F#代码中,我有一个定义了两个值的模块:int list
和(int list) list
。
在下面的C#代码中,我有一些单元测试,试图迭代F#中定义的列表值。
当我运行单元测试时,我会得到以下输出。
[1; 2; 3] 3 1 2 3
[[1; 2; 3]; [2; 3; 4]] Test
'MasterMind.Test.ConsistentCodeTests.CanIIterateListsOfLists'
失败:System.EntryPointNotFoundException
:未找到入口点
在System.Collections.Generic.IEnumerable'1.GetEnumerator()
在System.Linq.Enumerable.Count[TSource](IEnumerable'1 source)
ConsistentCodeTests.cs(49,0)
:
在MasterMind.Test.ConsistentCodeTests.CanIIterateListsOfLists()
1通过,1失败,0跳过,耗时3.11秒(NUnit 2.6.4(。
访问int list
工作正常。C#代码可以成功地打印它,获取它的计数,并对它进行迭代
尝试获取(int list) list
值的计数或对其值进行迭代会引发EntryPointNotFoundException
。我不知道该怎么做才能纠正这个错误。
module Game.Engine
let aList = [1;2;3]
let listOfLists = [[1;2;3];[2;3;4]]
[Test] public void CanIIterateAList()
{
Console.WriteLine(Game.Engine.aList);
Console.WriteLine(Game.Engine.aList.Count());
foreach (int i in Game.Engine.aList) Console.WriteLine(i);
}
[Test] public void CanIIterateListsOfLists()
{
Console.WriteLine(Game.Engine.listOfLists);
Console.WriteLine(Game.Engine.listOfLists.Count());
}
FSharp.Core
版本不匹配。请检查您的某个软件包是否未安装FSharp.Core
v3.something-如果安装了,请更新到最新的稳定软件包。
如果这还不够,请在测试项目的app.config中(假设测试运行者会注意到这一点(检查是否有绑定重定向到正确的v4程序集。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
如果这仍然没有帮助,请删除测试项目下的obj
文件夹并重新生成。