我试图在我的 C# 代码中使用参数调用 matlab 方法。我使用反射在运行时将带有 matlab 函数的 dll 加载到我的应用程序中,效果很好:
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#,我将来自 Matlab 运行时的程序集“MWArray.dll”静态添加到我的项目中。
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 方法时,我得到一个异常,即 anMWNummericArray
无法转换为 anMWArray
虽然MWNummericArray
直接派生自MWArray
. 我错过了什么还是我做错了?