如果你想從exec文件中獲得不同的行爲,你可以很容易地創建自己的行爲,並通過在.NET中創建函數並將其設置爲範圍來執行此類操作(共享範圍)。這也可以讓你添加額外的功能,如果你願意。
這似乎工作:
設置發動機:
var py = Python.CreateEngine();
var source = py.CreateScriptSourceFromFile(@"..\..\IronPython\body.py");
var scope = py.CreateScope();
然後我創建一個可以通過腳本中使用,並設置它的範圍
Action<string> execFileCallback = fileName =>
{
var s2 = py.CreateScriptSourceFromFile(fileName);
s2.Execute(scope);
};
((dynamic)scope).myexecfile = execFileCallback;
source.Execute(scope);
現在的功能我的Body.py看起來像這樣:
someVarSetByBody = "This was set by the body"
Console.WriteLine("Body is loading")
myexecfile(r"..\..\IronPython\Header.py")
Console.WriteLine("Body has loaded")
而且我Header.py是這樣的:
Console.WriteLine("Header is loading")
Console.WriteLine("Variable set by body: %s" % someVarSetByBody)
Console.WriteLine("Header has loaded")
它現在能夠使用相同的範圍,不同的腳本,以便您可以共享的變量。