问题描述
我在Ironpython脚本中定义了字典,我想从我的C#中访问该字典代码.有人可以提供示例代码来实现我的要求.
I have dictionary defined in Ironpython script and I want to access this dictionary from my C#code. Can someone provide example code to achieve my requirement.
对不起,我没有在代码中提及我的问题陈述.
Sorry earlier I did not mention my problem statement with code.
import clr
clr.AddReference("System.Core")
import System
clr.ImportExtensions(System.Linq)
from System.Collections.Generic import Dictionary,List
def check(self):
dict1 = Dictionary[str,str]
dict1["a"] = "aa"
dict2 = Dictionary[str,str]
dict2["b"] = "bb"
self[0] = dict1
# self.Add(dict1)
return self
C#
var runtime = Python.CreateRuntime();
dynamic test = runtime.UseFile("Test.py");
var myDictList = new List<Dictionary<string, string>>();
var myDL = new List<Dictionary<string, string>>();
myDL = test.check(myDictList);
我的目标是在python中的Dictionary List上进行操作(添加,从列表中删除),然后将其发送回C#,在这里我可以进一步使用它.我想要的是在python或C#中创建字典列表,然后在(python和C#)两个地方都使用它.我该怎么办.
My objective is to operate(Add, remove from list) on List of Dictionary in python and send it back to C# where I can use it further.What I want is either create a list of dictionary in python or in C# and use it in both( python and C#) the places.How can I do so.
推荐答案
这有效:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Utils;
using Microsoft.Scripting.Runtime;
using IronPython;
using IronPython.Hosting;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ScriptEngine pyEngine = Python.CreateEngine();
ScriptScope pyScope = pyEngine.CreateScope();
ScriptSource pyScript = pyEngine.CreateScriptSourceFromString("d = {'a':1,'b':2,'c':3}");
CompiledCode pyCompiled = pyScript.Compile();
pyCompiled.Execute(pyScope);
IronPython.Runtime.PythonDictionary d = pyScope.GetVariable("d");
Console.WriteLine(d.get("a"));
Console.Read();
}
}
}
应给您键"a"的第一个值.希望这能帮助您前进.可能有一个或两个包含太多.
Should give you the first value for key 'a'. Hope this gets you going.Possibly there are one or two includes too many.
这篇关于从C#访问Ironpython字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!