如何使用F#中的多个文件和C#库?

时间:2009-05-10 02:30:21

标签: c# .net f#

我有一个带有以下命名空间/类的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类中的每个方法。

此外,从同一项目中的其他文件调用某些文件中的函数的标准做法是什么?我不想创建完整的对象只是为了访问一些函数。

2 个答案:

答案 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);;