c# – 如何在已编译的.NET程序集中使用Matlab对象?

我有一个基本的Matlab类,我想在C#中实例化.

classdef MyClass
    properties
        Value
    end

    methods
        function obj=MyClass(v)
            obj.Value = v;
        end

        function display(obj)
            disp(obj.Value);
        end
    end    
end

然后将其内置到.DLL文件中,并将其与相关的Matlab命名空间(MathWorks.MATLAB.NET.Arrays,MathWorks.MATLAB.NET.Utility)一起导入C#项目中.

在C#方面,我试图构建这个类的实例化:

        Untitled2.MLTestClass matlab = new Untitled2.MLTestClass();
        MWCharArray input = new MWCharArray("Initial");                       
        MWArray[] result = matlab.MyClass(1, input);

在最后一行代码的末尾,result.Length = 1,result [0] = null.我不知何故希望以某种方式获得对新创建的Matlab对象的引用.我在想,这有可能吗?如果是,那么如何实现呢?如果不是,有办法解决吗? (我基本上有一个用C#编写的GUI组件,我不想在Matlab中集成,反过来,反之亦然).

最佳答案 在.NET程序集中使用Matlab类是
not possible.

有许多变通方法:

>将变量定义为全局变量,并使用包含其方法的多个函数访问它
>将您的Matlab类作为struct中的字段值返回.

这是(1)的代码片段:

function CreateMyClass(st)
    global myClass;
    myClass = MyClass(st);
end

function DisplayMyClass()
    global myClass;
    myClass.display();
end
点赞