我在 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# 的工作原理,您有什么提示吗?
最佳答案
好的 问题是交互部分
#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
现在可以用了,另见this
关于c# - 从 F# 调用 C# 静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47261014/