-1

我想让用户能够从我的 winforms 应用程序中执行一些用 c# 编写的小代码。我想用php,所以我找到了Phalanger。

我在我的Form中放了两个richTextEdit,我想在richTextEdit1中编写php,按下一个按钮,然后在richTextEdit2中查看结果。

php代码是:

回声“你好词!”;

按钮代码是:

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 作为输出,它可以正常工作,但没有用。如果没有,我没有结果。

谁能帮我?

4

1 回答 1

2

sw.Flush()在阅读 ms 的内容之前只需调用。我建议在阅读 ms 并明确指定编码之前将 sw 的用法包装到 using 语句中using (sw = new StreamWriter(ms, Encoding.UTF8))

于 2013-03-13T07:26:59.653 回答