我想让用户可以从我的winforms应用程序中执行一些代码,用c#编写。我想使用php,所以我找到了Phalanger。
我在表单中放了两个richTextEdit,我想在richTextEdit1中编写php,按一个按钮,然后在richTextEdit2中查看结果。
php代码是:
回声“Hello word!”;
按钮代码为:
ScriptContext context = ScriptContext.CurrentContext;
MemoryStream ms;
StreamWriter sw;
ms = new MemoryStream();
sw = new StreamWriter(ms);
context.Output = sw ;
//context.Output = Console.Out;
var res = DynamicCode.Eval(
richTextBox1.Text,
false,/*phalanger internal stuff*/
context,
null,/*local variables*/
null,/*reference to "$this"*/
null,/*current class context*/
"Default.aspx.cs",/*file name, used for debug and cache key*/
1, 1,/*position in the file used for debug and cache key*/
-1,/*something internal*/
null/*current namespace, used in CLR mode*/
);
richTextBox2.Text = Encoding.UTF8.GetString(ms.ToArray());
如果我使用Console.Out作为输出,它工作正常,但没有用。如果没有,我没有结果。
任何人都可以帮助我吗?
答案 0 :(得分:2)
在阅读ms的内容之前,只需致电sw.Flush()
即可。我建议在读取ms之前将sw的用法包装到using语句中并明确指定编码using (sw = new StreamWriter(ms, Encoding.UTF8))