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