目前我有一个使用.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对象调用回调?
答案 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()
句柄。