在matlab中使用.net自定义类

sha*_*r_m 4 .net matlab class

我正在使用Matlab导入我自己
使用的自定义dot .NET dll库AssemblyInfo = NET.addAssembly('c:\myClasses.dll').

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

'MyLib.ClassA'  
'MyLib.ClassB'  
'MyLib.ClassA+eResults'  
Run Code Online (Sandbox Code Playgroud)

我正在使用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中创建实例自定义类?
什么是加号意味着什么,以及如何创建MyLib.ClassA+eResults没有任何语法错误的实例?

Sim*_*ier 8

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

var = MyLib.ClassB(x, y);
Run Code Online (Sandbox Code Playgroud)

对于第二个问题,+表示eResults是ClassA 的嵌套类.您不能直接实例化,但有一个基于此处描述的反射的解决方法:使用嵌套类:

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