我有一个带有以下命名空间/类的C#库:
namespace Helper
{
public static class Util
{
/*static methods*/
}
}
我在F#项目中引用了这个库,当我尝试调用其中一个方法时:
error FS0039: The namespace or module 'Helper' is not defined.
这是方法调用不起作用的示例:
#light
let a = Seq.skip 1000 (Helper.Util.GetPrimes 200000);;
我错过了一些明显的东西吗?使用open Helper也不起作用,奇怪的是IntelliSense确实有效,它列出了Util类中的每个方法。
此外,从同一项目中的其他文件调用某些文件中的函数的标准做法是什么?我不想创建完整的对象只是为了访问一些函数。
答案 0 :(得分:3)
关于多个文件,请参阅“Using multiple F# source files, and a useful debugging technique”的第一部分,以及“Sneak peeks into the F# project system, part three”的最后部分。前者讨论了文件中的顶级代码如何隐式进入与文件名同名的模块,而后者则讨论了如何在项目中订购文件(因为您只能看到在您之前/之前声明的内容)。 / p>
答案 1 :(得分:2)
您的GetPrimes方法是什么样的?它对我有用......
我有一个C#库的解决方案,包括以下代码:
namespace Scratch
{
public static class Util
{
public static IEnumerable<int> GetNumbers(int upto)
{
int i = 0;
while (i++<upto) yield return i;
}
}
}
从一个引用C#项目的F#项目中调用它,如下所示:
#light
let p = Seq.skip 1000 ( Scratch.Util.GetNumbers 2000000);;