[英]Passing multiple arguments from IronPython to .NET method
我有一個.NET(C#)類:
public class MyHelper {
public object exec( string script, params object[] arguments ) {
// execute script with passed arguments in some external enviroment
}
}
我在我的代碼中使用IronPython運行時來運行python腳本,在某些情況下應該調用“exec”方法。 我想以舒適的方式調用“exec”方法。 就像是:
helper.exec( "someExternalFunction( {0}, {1}, {3} )", var01, var02, var03 )
但我不知道如何在C#中聲明“exec”方法來實現這一點。 在python中我可以使用“* args”參數:
def exec( script, *args ):
... do something ...
我不希望從“MyHelper”類中獲得單獨的Python方法“exec”,因為“MyHelper”類在“一個地方”提供了復雜的功能。
我應該如何在C#中編寫“exec”方法聲明來實現呢? 或者我應該使用其他什么解決方案?
謝謝
這里的問題是“exec”是Python中的關鍵字,因此您不能將其用作函數名稱。 您可以使用“exec_”或執行或類似的東西。 或者你可以寫:
getattr(helper,'exec')(...)
根據此常見問題解答 ,您定義的MyHelper.exec
應接受array
作為第二個參數,或接受第一個string
任意數量的objects
。
如果你的示例調用helper沒有按預期調用,那可能是IronPython解釋器的限制,可能需要將其歸檔為bug 。 然而,在將其作為錯誤提交之前,請創建一個最小的可運行C#腳本來演示您正在嘗試執行的操作(顯示它在C#中的預期效果),以及嘗試執行相同操作但失敗的IronPython腳本。 這對於使問題有效是非常寶貴的。
與此同時,為什么不打電話
helper.exec( "someExternalFunction( {0}, {1}, {3} )", [var01, var02, var03] )
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.