我目前正在使用Matlab导入我拥有的自定义.NETDLL库,
使用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
实例?
发布于 2013-02-07 17:39:18
要创建类的实例,它必须是公共的,并且具有公共构造函数。如果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);
https://stackoverflow.com/questions/14579472
复制相似问题