.net无缝c#+ f#

问题描述 投票:1回答:1

可以说我有一个C#类

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

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

namespace FSharp
open CSharp
let MyX (x : CSharp.Point) = x.coords.item 0

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

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

c# .net visual-studio f#
1个回答
6
投票

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

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

另请注意,如果您在单个F#项目中编写此内容,则自F#以来遇到同样的问题,与C#,also disallows circular dependencies(有一些例外)不同。

© www.soinside.com 2019 - 2024. All rights reserved.