2

次のような文字列変数からコードを実行することは可能ですか?
string mystring = "Console.WriteLine(\" Hi \ ");"; mystringの内容を実行することは可能ですか(「Hi」を出力)?

4

4 に答える 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#は動的またはインタプリタ言語ではないため、すぐに使用することはできません。

http://www.codeproject.com/KB/dotnet/Expr.aspx

C#コードを動的に評価するにはどうすればよいですか?

于 2011-02-01T05:08:44.270 に答える