Я пытаюсь вызвать метод matlab в моем коде C # с параметрами. Я использовал отражение, чтобы загрузить dll с функцией matlab во время выполнения в мое приложение, которое прекрасно работает:
Assembly matlabAssembly = Assembly.LoadFrom(info.FullName);
List<Type> types = new List<Type>();
types = matlabAssembly.GetTypes().ToList();
List<MethodInfo> methods = new List<MethodInfo>();
methods.AddRange(types[0].GetMethods());
dynamic dynamicObject = Activator.CreateInstance(types[0]);
DLL содержит один тип с одной функцией:
MWArray MyMatlabFunction(MWArray, MWArray, MWArray, MWArray);
Я создаюнесколько массивов и хотите передать их в качестве параметров этой функции. Чтобы сделать тип MWArray
доступным для C # во время компиляции, я статически добавил сборку "MWArray.dll" из среды выполнения Matlab в мой проект.
MWArray array1 = new MWNumericArray(120);
MWArray array2 = new MWNumericArray(100);
MWArray array3 = new MWNumericArray(15);
MWArray array4 = new MWLogicalArray(true);
object[] params = new object[] {array1, array2, array3, array4};
MethodInfo matlabFuncion = methods[5]; //MyMatlabFunction
matlabFunction.Invoke(dynamicObject, params);
Когда я вызываю метод invoke, я получаю исключение, что MWNummericArray
не может быть преобразован в MWArray
, хотя MWNummericArray
напрямую происходит от MWArray
. Я что-то упускаю или делаю это совсем не так?