次のような文字列変数からコードを実行することは可能ですか?
string mystring = "Console.WriteLine(\" Hi \ ");"; mystringの内容を実行することは可能ですか(「Hi」を出力)?
1316 次
4 に答える
4
System.Reflection.EmitまたはSystem.CodeDom名前空間を使用することは可能ですが、名前空間が何であるか、および許可されていないかを制御するメカニズムがないため、これは必ずしも良い考えではありません。ユーザーは、ハードドライブをワイプする文字列を作成できます。
eval()のような関数は、大きなギャップのあるセキュリティホールであるため、避ける必要があります。推奨される代替手段はDSL(ドメイン固有言語)です。
于 2011-02-01T05:08:22.253 に答える
1
はい。実行時にコンパイラを起動し、コードを渡します。実行可能コードを吐き出します。System.CodeDom
特に、名前空間を参照してくださいSystem.CodeDom.Compiler
。
于 2011-02-01T05:07:30.063 に答える
1
コードDOMを使用する
于 2011-02-01T05:07:32.963 に答える
1
そのようなものを得るために反射を使用する必要があります。C#は動的またはインタプリタ言語ではないため、すぐに使用することはできません。
于 2011-02-01T05:08:44.270 に答える