C# 如何从MATLAB调用带有重载返回参数的C函数?

C# 如何从MATLAB调用带有重载返回参数的C函数?,c#,matlab,C#,Matlab,假设我有以下C语言代码: public class MyClass { public void MyFunction(out string str) { str = "Hello"; } public void MyFunction(out int a) { a = 5; } } 假设我想从MATLAB调用此函数: >>NET.addAssembly('MyCSharpDll.dll'); >&

假设我有以下C语言代码:

public class MyClass
{
    public void MyFunction(out string str)
    {
        str = "Hello";
    }

    public void MyFunction(out int a)
    {
        a = 5;
    }
}
假设我想从MATLAB调用此函数:

>>NET.addAssembly('MyCSharpDll.dll');
>>obj = myNamespace.MyClass();
>>number = MyFunction(obj);

显然,MyFunction是一个模棱两可的调用。如何告诉MATLAB调用哪个重载函数?

此代码中存在多个错误。首先,在类名之前使用class关键字。其次,类型名是错误的,请使用string和int或System.string和System.Int32-它们是等效的。第三,如果使用return,则不要将return类型标记为void,而是将其标记为上述任一项。然后,您会发现函数不能只因返回类型而有所不同,所以您必须更改名称或参数。那是在接到Matlab电话之前…谢谢。您说函数不能只因返回类型而有所不同。但什么时候被宣布为“出局”?我在一个C API中得到了上述情况。上面代码中的方法在参数列表中不同,而不是在返回类型中不同。这两种方法都具有void返回类型。虽然参数是out参数,但它仍然是参数列表的一部分,而不是返回类型。有趣的。。。到目前为止,这个对象确实有两种方法z=metaclassobj;m=findobjz.MethodList,'Name','MyFunction'将m作为2x1方法数组返回,该数组在签名中具有正确的输出名称。。。不幸的是,我没有找到任何解决方案来从这些元数据对正确的方法进行动态调用…: