c# - 从 F# 调用 C# 静态方法

标签 c# f# interop

我在 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/

相关文章:

c# - 检测用于创建 RegEx 的文件名模式

f# - 返回 Result 类型的异常

f# - Kleisli 组合的编译错误

wpf - WPF 在现实生活中与 XNA 的融合程度如何?

java - 从 JVM 调用 CLR 代码

c# - XNA 到 Mono Android 转换 : What is a simple (or the simplest) way of handling the activity life cycle?

javascript - 运行 C# 代码后禁用 aspx 页面中的按钮

c# - 如何在 C# 中固定指向托管对象的指针?

sorting - 为什么是 F#'s Seq.sortBy much slower than LINQ' s IEnumerable<T>.OrderBy 扩展方法?

c# - 在 C# 中从外部应用程序获取 UI 文本