我正在尋找一個C#腳本引擎,可以解釋的C#代碼塊,而維修器材的上下文。例如,如果輸入:var a = 1;
,然後輸入a + 3
,它將輸出4
。 我知道MS Roslyn
,它確實是這樣做的,但它是一個沙箱(尊重啓動它的程序)。所以,如果我創建的ScriptEngine
實例和MyClass
實例(只是一個arbirary類礦井),我沒有選擇的my_class
參考傳遞給script_engine
。通行證對象實例的羅斯林的ScriptEngine
是否有可能以某種方式通引用?
我想什麼做的,是一樣的東西:
ScriptEngine engine; // A Roslyn object
Session session // A Roslyn object
MyClass my_class; // My object
// all required initializations
Submission<object> sm = session.CompileSubmission<object>("var a=1;");
dynamic result = sm.Execute();
Submission<object> sm = session.CompileSubmission<object>("a + 3;");
dynamic result = sm.Execute(); // result is now 4
MyClass my_class;
session.AddReferenceToAnOject(my_class); // function that does not exists, but reflect my intention
Submission<object> sm = session.CompileSubmission<object>("my_class.ToString();");
dynamic result = sm.Execute(); // result is no the output of my_class.ToString()
請注意AddReferenceToAnOject()
是缺少的一部分,有羅斯林沒有這樣的功能。
如果我是你,我會刪除第二個項目符號點。這將有助於防止您的問題被作爲「關於工具,圖書館或最喜愛的非現場資源的建議」而關閉。 –
看看CS-腳本http://www.csscript.net/ – Mez
或許檢查[與宿主應用程序進行交互(http://blogs.msdn.com/b/csharpfaq/archive/2011/12/02 /introduction-to-the-roslyn-scripting-api.aspx)。 – Herman