2011-02-01 7 views
2

文字列変数からコードを実行することは可能ですか?
文字列mystring = "Console.WriteLine(\" Hi \ ");"; mystringの内容を実行することは可能ですか( 'Hi'を印刷しますか?C#変数コードを実行

+1

をそれを得ることが明確に共通ではありませんので、それはあなたがこの動作をしたい理由を説明することをお勧めしますいけません。そうすることで、達成しようとしているより具体的な行動を生み出すより洗練されたソリューションを提案する可能性があります。 –

+0

実際、これにも私は答えが大好きです。私は、C#のリフレクションなどを使ってPythonのプロンプトスタイルを書くことについてしばらく考えてきました。私はいくつか存在することを知っていますが、すでに書かれているものを使うことは、実際には素晴らしい学習の練習ではありません。私のアプリケーションで.net以外のライブラリを使用することを拒否する理由の1つです。 – dotalchemy

答えて

1

はい。実行時にコンパイラを起動し、コードを渡します。実行可能コードが吐き出されます。 System.CodeDom名前空間、特にSystem.CodeDom.Compilerを参照してください。

1

はそれがSystem.Reflection.EmitまたはSystem.CodeDom名前空間を使用することも可能だが、それは名前空間が何であるかを制御するメカニズムがありませんと正確にはお勧めできませんし、許可されていないCode DOM

4

を使用してください。ユーザーはハードドライブを拭くための文字列を作成することができます。

eval()のような関数は、大きな穴があいているセキュリティホールであり、避けるべきです。好ましい選択肢はDSL (domain specific language)です。

関連する問題