2011-01-07 6 views
3

Mono Evaluatorクラスを使用してC#スクリプトを実行しています。コードに構文エラーがある場合、エラーはコンソールに出力されます。むしろ、出力をStringに戻すようにしたいと思います。コンソール全体をリダイレクトすることができますが、Evaluatorの出力を取得することをお勧めします。Mono Evaluatorクラス

TextWriterであるMessageOutputプロパティがありますが、どうしたらよいか分かりません。ただ、ここで推測するつもり

+0

このプロパティについては、ここで情報が見つからないため、このプロパティのソースがありますか:http://www.go-mono.com/docs/monodoc.ashx?link=T% 3aMono.CSharp.Evaluator%2f%2a – codekaizen

+0

これはInteliesenseで表示されます – FlappySocks

+0

うーん...それはdocumentatイオンは最新ではありませんか? – codekaizen

答えて

1

...

は新しいSystem.IO.StringWriterを作成し、MessageOutputに割り当て?

もし動作すれば、ToString()でStringWriterの内容を取得できます。

+0

それを試しましたが、何もしていないようです。 – FlappySocks

+0

モノのバージョンは? – codekaizen

0

これは古い質問ですが、私はちょうど答えを探していました。ここでは、出力をキャプチャするために何をしたのですか(出力が「エラー」であるかどうかは、解析する必要があります)は、lastOutputです。

考えはこれです:次に、新しいの一環として、評価者にその新しいReportPrinterを渡す)

1)私たちは書き込み/ WriteLineメソッドは
2呼び出しをキャプチャすることができ、新たなConsoleReportPrinterを作成し、CustomTextWriterに渡しますコンパイラコンテキスト

class CustomTextWriter : TextWriter 
{ 
    private string lastOutput { get; set; } 
    public CustomTextWriter() { } 
    public override void Write(string value) 
    { 
     lastOutput = value; 
     Console.Write(value); 
    } 
    public override void WriteLine(string value) 
    { 
     lastOutput = value; 
     Console.WriteLine(value); 
    } 
    public override Encoding Encoding 
    { 
     get 
     { 
      return Encoding.Default; 
     } 
    } 
} 
static void Main(string[] args) 
{ 
    ReportPrinter r = new ConsoleReportPrinter(new CustomTextWriter()); 
    evaluator = new Evaluator(new CompilerContext(
         new CompilerSettings(), 
         r)); 
    // all evaluations now will pass through our CustomTextWriter 
}