从F#调用C#静态方法

4

我有一个C#的类:

使用System.Collections.Generic;

namespace StrassGlassLib
{
    public class Mesh
    {
        private List<Model.Node> _ns;
        private List<Model.Plate> _ps;

        public Mesh()
        {
            _ns = new List<Model.Node>();
            _ps = new List<Model.Plate>();
        }

        public List<Model.Node> Nodes => _ns;

        public List<Model.Plate> Plates => _ps;

        public void AddNode(Model.Node n)
        {
            _ns.Add(n);
        }

        public void AddPlate(Model.Plate p)
        {
            _ps.Add(p);
        }

        // CREATION METHOD
        public static Mesh CreatePlanarMesh()
        {
            // create new mesh
            Mesh m = new Mesh();
            // add node
            for (int y = 0; y < 2; y += 1)
            {
                for (int x = 0; x < 4; x += 1)
                {
                    m.AddNode(new Model.Node(0, x, y, 0.0));
                }
            }

            return m;
        }
    }
}

我正在尝试使用F#进行调用,以学习如何使用这种语言进行测试,但是遇到了以下问题:

namespace StraussGlassTest

open System

module MeshTesting =
    open StrassGlassLib

    let m = Mesh.CreatePlanarMesh()

问题如下:
  • 我遇到了错误FS0039:未定义名称空间或模块'Mesh'。
  • 控制台没有报错,代码看起来没问题
  • 如果我尝试访问Nodes属性,我会得到错误FS0039:未定义字段、构造函数或成员“Nodes”

我想我在F#的工作方式上错过了一些东西,你有什么提示吗?


1
可能是如何从F#中使用C#对象?的重复问题。 - Tobias Theel
2
据我所知,代码看起来还不错。你是否已经在 F# 项目中添加了对 C# 项目的引用? - TheQuickBrownFox
1个回答

3

好的,问题出在交互部分。

#if INTERACTIVE
#r @"C:\Users\p.cappelletto\Documents\Visual Studio 2015\Projects\StraussGlass\StraussGlassLib\bin\Debug\StraussGlassLib.dll"
#r @"C:\Users\p.cappelletto\Documents\Visual Studio 2015\Projects\StraussGlass\StraussGlassLib\bin\Debug\StrausLib.dll"   
#endif

namespace StraussGlassTest

open System

module MeshTesting =
    open StraussGlassLib
    open StrausLib

    let m = Mesh.CreatePlanarMesh()
    printfn "%A" m.Nodes.Count

现在它可以工作,也可以查看这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接