.net无缝c#+ f#

Flu*_*ish 1 .net c# f# visual-studio

可以说我有一个C#类

namespace CSharp;
using FSharp;
class Point
{
    public double[] coords;
    double MyX
    {
        get
        {
            return FSharp.MyX(this);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一个返回坐标的F#方法

namespace FSharp
open CSharp
let MyX (x : CSharp.Point) = x.coords.item 0
Run Code Online (Sandbox Code Playgroud)

这可能会很好,但它循环引用,因为它有2个独立的项目(在1个解决方案中).如果他们被视为同一个项目就不会有问题,但是VS不让我这样做,就我而言,你不能在1个项目中使用2种编码语言.至少我没有找到办法做到这一点.

我的问题是,如何完成这样的事情?

Asi*_*sik 5

如果您的问题是:"两个项目如何相互引用类型",答案是您不能这样做.不允许项目之间存在循环依赖关系,请参阅循环依赖关系.

要么将公共类型提取到两个项目引用的第3个项目,要么找到两个项目中的一个根本不需要引用此类型的方法.

另请注意,如果您在单个F#项目中编写此内容,则会遇到同样的问题,因为与C#不同,F#也不允许循环依赖(有一些例外).

  • @TyCobb这是有效的C#:`class A {B foo;} class B {A foo;}`这个在F#中的简单翻译将无法编译.这就是我的意思. (2认同)