簡體   English   中英

將多個參數從IronPython傳遞到.NET方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM