2011-07-13 5 views
1

多かれ少なかれ、私は動的にユーザーコードを実行しています。ファイルやコマンドラインプログラムのように、コンソールからWriteメソッドやReadメソッドを取得したいと思います。リフレクションでアセンブリを標準化するにはどうすればよいですか?

ここでは、1つのメインで動的プログラムを実行する場合のコードを示します。

_assembly = compilerResults.CompiledAssembly; 
    object o = _assembly.CreateInstance(ClassNameString); 
    MethodInfo mi = _assembly.EntryPoint; 
    mi.Invoke(o, null); 
+1

を?それが完全に吹き飛ばされた既存のEXEであったならば、私はProcessクラスを使用し、適切なメンバーをStartInfoプロパティで選択することを提案しました。 –

+0

これは、print()、read()など、いくつかのファイルを使用するメソッドを含むことを意味しますか? – max

答えて

1

アセンブリには別の出力がありません。それはプロセスごとです。

自分の標準を聞いたり、生成されたクラスにストリームを渡す必要があります。

+0

ストリームを生成/コンパイルされたクラスにどのように渡しますか? – max

+0

メソッドまたはコンストラクタのパラメータとして使用します。 –

1

あなたがConsole.OutとConsole.In背後リーダライタ設定することができます:あなたはコードを生成していると、なぜあなたはそれをしたい出力を送信するためのコードを生成しない、のCodeDOMを経由して

Console.SetOut(new MyInterceptingTextWriter()); 
Console.SetIn(new MyInterceptingReader()); 

// your code here 
関連する問題