将MATLAB方法作为委托传递给.NET Object

时间:2015-07-14 13:51:23

标签: c# .net matlab delegates

目前我有一个使用.NET库的MATLAB项目。在Matlab中,我读入.dll并实例化我开发的.NET对象,并将数据传入和传出:

NET.addAssembly('myLibrary.dll');
myNetObj = myNamespace.MyClass();
myNetObj.DoWork(someMatlabVariable);

遵循MATLAB文档(参见here)我可以将变量传递给我的.NET函数,但我想让我的.NET代码调用matlab方法/回调。该文档明确定义了如何使用.NET委托MATLAB到.NET代理(参见here)。

是否可以将MATLAB函数作为.NET委托或Action传递(指向),以便从.NET对象调用回调?

1 个答案:

答案 0 :(得分:2)

我发现如何将matlab函数句柄传递给c#中的委托。答案隐藏在MATLAB .NET Documentation

在.NET / C#代码中:

namespace SomeNamespace{
   // Create Delegate with appropriate input parameters and return types
   public Delegate void SomeDelegateType();

   public class SomeClass{
      // Create a Delegate for Matlab to assign to
      public SomeDelegateType SomeDelegate;
      ...
   }
}

在Matlab中:

// % Instantiate .NET object    
classInstance = SomeNamespace.SomeClass();
// % Assign matlab function handle to .NET Delegate
classInstance.SomeDelegate = SomeNamespace.SomeDelegateType(@SomeMatlabMethod);

function SomeMatlabMethod()
   ...
end

现在,当.NET代码调用SomeDelegate()时,它将调用传递给它的Matlab函数SomeMatlabMethod()句柄。