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

Passing MATLAB methods as delegates to .NET Object

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

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

遵循 MATLAB 文档(参见 here) I can pass variables to my .NET functions, but I would like to have my .NET code call matlab methods/callbacks. The documentation clearly defines how to use .NET delegates MATLAB to .NET Delegates (See here)。

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

我找到了如何将 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() 句柄。