4

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

4

1 回答 1

8

要创建类的实例,它必须是公共的并且具有公共构造函数。如果 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);
于 2013-02-07T09:39:18.343 回答