использование пользовательских классов .net в Matlab

В настоящее время я использую Matlab для импорта пользовательской библиотеки dll dot NET, которую я имею,
используя AssemblyInfo = NET.addAssembly ('c: \ myClasses.dll') .

перечисление disp (AssemblyInfo.Classes) выставляет пользовательские классы библиотеки, например

'MyLib.ClassA'  
'MyLib.ClassB'  
'MyLib.ClassA+eResults'  

I'm using myVar = MyLib.ClassA; to create a .net class variable within matlab (which works fine),
but the second class has no constructor, so myVar = MyLib.ClassB; results in
No constructor 'MyLib.ClassB' with matching signature found.

Вторая проблема - знак плюса (+) в классе .NET MyLib.ClassA + eResults ,
из которых вызывает ошибку при попытке myVar = MyLib.ClassA + eResults;
Неопределенная функция или переменная 'eResults'.

Есть ли способ создать экземпляр пользовательского класса MyLib.ClassB в matlab?
Что такое знак плюса и как создать экземпляр MyLib.ClassA + eResults без какой-либо синтаксической ошибки?

4
nl ja de
Можете ли вы предоставить объявление ClassA и CalssB ?
добавлено автор Shai, источник

1 ответы

Чтобы создать экземпляр класса, он должен быть общедоступным и иметь общедоступные конструкторы. Если классB имеет только собственный конструктор с несколькими параметрами, вы можете создать его следующим образом:

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);
8
добавлено