安裝完成後,將IronPython.dll以及Microsoft.Scripting.dll加入參考
並且using IronPython.Hosting以及Microsoft.Scripting.Hosting
先透過ScriptEngine建立一個Python Engine,並執行指定的Python檔案
TryGetVariable確保該模組或類別存在,存在的話將值指定給mDemo
並透過Demo建構子給予demo值,在由demo呼叫方法即可
Python程式碼:
class Demo: def __init__(self): self.text = "Hi, C.Y." def getText(self): return self.text
C#.Net程式碼:
using System;
using System.Windows.Forms;
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//Create Python Script
ScriptEngine engine = Python.CreateEngine();
//Execute demo.py
ScriptScope scope = engine.ExecuteFile(@"C:\Users\CY\Desktop\demo.py");
//Demo class
dynamic mDemo;
//Try create class
if (scope.TryGetVariable("Demo", out mDemo))
{
//Get Demo class
dynamic demo = mDemo();
//Get text
label1.Text = demo.getText();
}
}
}
}
執行結果:
參考資料:
http://stackoverflow.com/questions/7053172/how-can-i-call-ironpython-code-from-a-c-sharp-app
http://www.manning.com/foord/SampleChapter7.pdf
http://stackoverflow.com/questions/3737690/where-is-microsoft-scripting-core-dll
http://stackoverflow.com/questions/11041639/ironpython-inheritance-constructor-issue
http://blog.drorhelper.com/2010/08/how-to-run-ironpython-code-from-c.html
http://stackoverflow.com/questions/15563309/python-for-net-fails-silently-when-calling-system-windows-forms-form-constructo

