.net - 在 matlab 中使用 .net 自定义类

标签 .net class matlab

我目前正在使用 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/

相关文章:

c# - 如何保存具有多个缩进设置的 XmlDocument?

javascript - 如何用短函数名声明一个 javascript 类并稍后分配给一个长类名?

c++ - C++类中的C'tor

matlab - 无法使用 isspace 识别空格字符

matlab - 跳转到方法定义,不管它是在哪个类中定义的

c# - 跨平台 C# 媒体 API

c# - 跟踪列表框中的项目

c# - 如果使用 Enterprise Library,log4net 是否更适合登录?

php - PHP 中的类是什么?

java - 将 matlab 串行时间戳转换为 java.util.Date