簡體   English   中英

如何將列表從C#傳遞給Ironpython作為函數的輸入參數

[英]How to pass a list from C# to Ironpython as input parameter of a function

我有一個Python腳本,我在我的C#代碼( Ironpython )中使用,它工作正常。 另外,我想在Python腳本中為我的函數添加一個列表作為輸入參數。

我從C#WinForm中獲取了一些字符串,我將其格式化為Python代碼:

string code = "list [a, b, c, d]";

我的附加C#代碼:

ScriptSource source = m_engine.CreateScriptSourceFromString(code);
dynamic script = m_engine.ExecuteFile(@"path to my file");
dynamic function = script.UpdateElements(source);

但后來我得到以下異常:

迭代ScriptSource類型的非序列

在我的Python文件中,我有一個這樣的函數(其中source是一個列表):

def UpdateElements(source):
   #do some stuff

所以我的問題是:我怎樣才能將C#中的字符串列表作為Python腳本中的函數輸入?

有一個字符串列表

var code = "['a', 'b', 'c', 'd']";

您可以執行此列表文字源來檢索IronPython列表:

dynamic result = source.Execute();

此列表可用於調用函數:

dynamic function = script.UpdateElements(result);

作為替代(如文本字符串列表僅僅是一個解決辦法,你必須在其他一些形式的實際值),您也可以提供一個.NET集合到你的IronPython的功能和罰款在很多場景:

var data = new[] { "a", "b", "c", "d" };
var engine = Python.CreateEngine();
dynamic script = engine.ExecuteFile(@"script.py");
dynamic function = script.UpdateElements(data);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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