.net бесшовные c # + f # - PullRequest
       2

.net бесшовные c # + f #

0 голосов
/ 11 сентября 2018

Допустим, у меня есть класс 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 не позволяет мне сделать это, и, насколько я понимаю, вы не можете использовать 2 языка кодирования в 1 проекте. По крайней мере, я не нашел способа сделать это.

У меня вопрос, как этого добиться?

1 Ответ

0 голосов
/ 11 сентября 2018

Если ваш вопрос: «Как два проекта могут ссылаться на типы друг на друга», ответ таков: вы не можете этого сделать. Круговые зависимости между проектами не допускаются, см. Круговые зависимости .

Либо извлеките общий тип в третий проект, на который ссылаются оба проекта, либо найдите способ, которым ни одному из ваших двух проектов вообще не нужно ссылаться на этот тип.

Обратите также внимание, что если бы вы писали это в одном проекте F #, вы столкнулись бы с той же проблемой, поскольку F #, в отличие от C #, также запрещает циклические зависимости (с некоторыми исключениями).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...