将 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()
句柄。
目前我有一个使用 .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()
句柄。