2

学生向けのSilverlightアプリを作成しており、重要なコンポーネントを探しています。アプリケーションでは、学生はテキストボックスにC#コード(1つのクラス)を追加できる必要があります。私がやりたいことは、次のことです。コードが有効なC#であることを検証し、理想的には、特定のインターフェイスを正しく実装していることも確認します。これを助けることができるコントロールはありますか?

クリス

4

2 に答える 2

1

CodecomProviderに基づくコード例:

private void button1_Click(object sender, System.EventArgs e)
{
    CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");
    string Output = "Out.exe";
    Button ButtonObject = (Button)sender;

    textBox2.Text = "";
    System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
    //Make sure we generate an EXE, not a DLL
    parameters.GenerateExecutable = true;
    parameters.OutputAssembly = Output;
    CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, textBox1.Text);

    if (results.Errors.Count > 0)
    {
        textBox2.ForeColor = Color.Red;
        foreach (CompilerError CompErr in results.Errors)
        {
            textBox2.Text = textBox2.Text +
                        "Line number " + CompErr.Line +
                        ", Error Number: " + CompErr.ErrorNumber +
                        ", '" + CompErr.ErrorText + ";" +
                        Environment.NewLine + Environment.NewLine;
        }
    }
    else
    {
        //Successful Compile
        textBox2.ForeColor = Color.Blue;
        textBox2.Text = "Success!";
        //If we clicked run then launch our EXE
        if (ButtonObject.Text == "Run") Process.Start(Output);
    }
}
Add the beginning of the file, add these using statements:
using System.CodeDom.Compiler;
using System.Diagnostics;
于 2012-06-21T13:20:16.383 に答える
0

私自身の質問を締めくくって答えてください (Luke Woodward に感謝します): System.CodeDom.Compiler 名前空間は Silverlight フレームワークではほぼ空であるため、これは不可能です :-(

于 2012-08-22T08:51:25.980 に答える