Mono Evaluatorクラスを使用してC#スクリプトを実行しています。コードに構文エラーがある場合、エラーはコンソールに出力されます。むしろ、出力をStringに戻すようにしたいと思います。コンソール全体をリダイレクトすることができますが、Evaluatorの出力を取得することをお勧めします。Mono Evaluatorクラス
TextWriterであるMessageOutputプロパティがありますが、どうしたらよいか分かりません。ただ、ここで推測するつもり
Mono Evaluatorクラスを使用してC#スクリプトを実行しています。コードに構文エラーがある場合、エラーはコンソールに出力されます。むしろ、出力をStringに戻すようにしたいと思います。コンソール全体をリダイレクトすることができますが、Evaluatorの出力を取得することをお勧めします。Mono Evaluatorクラス
TextWriterであるMessageOutputプロパティがありますが、どうしたらよいか分かりません。ただ、ここで推測するつもり
...
は新しいSystem.IO.StringWriter
を作成し、MessageOutput
に割り当て?
もし動作すれば、ToString()
でStringWriterの内容を取得できます。
それを試しましたが、何もしていないようです。 – FlappySocks
モノのバージョンは? – codekaizen
これは古い質問ですが、私はちょうど答えを探していました。ここでは、出力をキャプチャするために何をしたのですか(出力が「エラー」であるかどうかは、解析する必要があります)は、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
}
このプロパティについては、ここで情報が見つからないため、このプロパティのソースがありますか:http://www.go-mono.com/docs/monodoc.ashx?link=T% 3aMono.CSharp.Evaluator%2f%2a – codekaizen
これはInteliesenseで表示されます – FlappySocks
うーん...それはdocumentatイオンは最新ではありませんか? – codekaizen