5
如何從IronPython腳本訪問C#類? C#:從IronPython腳本訪問主機類
public class MyClass
{
}
public enum MyEnum
{
One, Two
}
var engine = Python.CreateEngine(options);
var scope = engine.CreateScope();
scope.SetVariable("t", new MyClass());
var src = engine.CreateScriptSourceFromFile(...);
src.Execute(scope);
IronPython的腳本:
class_name = type(t).__name__ # MyClass
class_module = type(t).__module__ # __builtin__
# So this supposed to work ...
mc = MyClass() # ???
me = MyEnum.One # ???
# ... but it doesn't
UPDATE
我需要導入一個託管組件定義的類。
我可以從外部程序集導入一個類。但我需要使用宿主程序集中的一個類。啓動python腳本的那個。我試圖玩弄導入,但無法找到一種方法來做到這一點。 – Max 2011-06-04 09:25:51
@Max:主機程序集並不是什麼特別的 - 你需要像從任何其他程序集那樣從它導入。你可以在它的'AddReference()'調用中放入完整的絕對路徑給它的DLL - 如果這樣做,那麼你知道它只是一個路徑/當前目錄問題(這可能很煩人,但至少你會知道是否該代碼是否有效) – Cameron 2011-06-04 14:02:02
由於腳本被託管,我確信我不需要導入托管程序集。現在,我已經嘗試過,我發現它正在工作。奇怪的是,當我通過類實例並查詢類名和模塊時,它看起來像這個類已經是全局名稱空間的一部分。 – Max 2011-06-04 19:39:44