在MATLAB中使用.NET自定义类

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (91)

目前正在使用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'.

有没有办法MyLib.ClassB在matlab中创建实例自定义类?

提问于
用户回答回答于

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

var = MyLib.ClassB(x, y);

对于第二个问题,+意味着eResults是ClassA 的嵌套类。你不能直接实例化,但是有一个基于这里描述的反射的解决方法:使用嵌套类:

a = NET.addAssembly('c:\myClasses.dll');
t = a.AssemblyHandle.GetType('MyLib.ClassA+eResults');
var = System.Activator.CreateInstance(t);

扫码关注云+社区

领取腾讯云代金券