我目前正在使用 Matlab 导入我拥有的自定义点 NET dll 库,
使用 AssemblyInfo = NET.addAssembly('c:\myClasses.dll')
。
list disp(AssemblyInfo.Classes)
公开库的自定义类,如
'MyLib.ClassA'
'MyLib.ClassB'
'MyLib.ClassA+eResults'
我正在使用 myVar = MyLib.ClassA;
在 matlab 中创建一个 .net 类变量(工作正常),
但是第二个类没有构造函数,所以 myVar = MyLib.ClassB;
结果是
未找到具有匹配签名的构造函数“MyLib.ClassB”。
第二个问题是 .NET 类 MyLib.ClassA+eResults
处的加号 (+),
其中在我尝试 myVar = MyLib.ClassA+eResults;
时导致错误
未定义的函数或变量“eResults”。
有没有办法在 matlab 中创建实例自定义类 MyLib.ClassB
?
加号是什么意思,如何创建没有任何语法错误的 MyLib.ClassA+eResults
实例?
最佳答案
要创建类的实例,它必须是公共(public)的并且具有公共(public)构造函数。如果classB只有一个带有多个参数的自定义构造函数,你可以像这样实例化它:
var = MyLib.ClassB(x, y);
对于第二期,+ 表示 eResults 是 nested class A类。您不能直接实例化,但这里有一个基于反射的解决方法: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/