我目前正在使用 Matlab 导入我拥有的自定义点 NET dll 库,
使用 AssemblyInfo = NET.addAssembly('c:\myClasses.dll')

列出 disp(AssemblyInfo.Classes) 公开库的自定义类,例如

'MyLib.ClassA'
'MyLib.ClassB'
'MyLib.ClassA+eResults'

我正在使用 myVar = MyLib.ClassA; 在 matlab 中创建一个 .net 类变量(工作正常),
但是第二个类没有构造函数,所以 myVar = MyLib.ClassB; 结果No constructor 'MyLib.ClassB' with matching signature found.
第二个问题是 .NET 类 MyLib.ClassA+eResults 处的加号 (+),
其中在我尝试 myVar = MyLib.ClassA+eResults; 时导致错误Undefined function or variable 'eResults'.
有没有办法在matlab中创建实例自定义类MyLib.ClassB
加号是什么意思,如何创建 MyLib.ClassA+eResults 的实例而没有任何语法错误?

最佳答案

要创建类的实例,它必须是公共(public)的并且具有公共(public)构造函数。如果 classB 只有一个带有多个参数的自定义构造函数,您可以像这样实例化它:

var = MyLib.ClassB(x, y);

对于第二个问题,+ 表示 eResults 是 ClassA 的 nested class。您不能直接实例化,但有一种基于此处描述的反射的解决方法: Working With Nested Classes :
a = NET.addAssembly('c:\myClasses.dll');
t = a.AssemblyHandle.GetType('MyLib.ClassA+eResults');
var = System.Activator.CreateInstance(t);

关于.net - 在 matlab 中使用 .net 自定义类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14579472/

10-12 12:37
查看更多