[英]Passing MATLAB methods as delegates to .NET Object
目前,我有一個使用.NET庫的MATLAB項目。 在Matlab中,我讀取了.dll並實例化了我開發的.NET對象,並將數據傳遞給它。
NET.addAssembly('myLibrary.dll');
myNetObj = myNamespace.MyClass();
myNetObj.DoWork(someMatlabVariable);
按照MATLAB文檔(請參閱此處 ),我可以將變量傳遞給.NET函數,但是我想讓.NET代碼調用matlab方法/回調。 該文檔明確定義了如何使用.NET委托MATLAB到.NET委托(請參閱此處 )。
是否可以將MATLAB函數作為.NET委托或Action傳遞(指向),以便我可以從.NET對象調用回調?
我發現了如何將Matlab函數句柄傳遞給c#中的委托。 答案隱藏在MATLAB .NET文檔中 。
在.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()
句柄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.