Is it possible to execute code from a string variable, like:
string mystring = "Console.WriteLine(\"Hi\");";
Is it possible to execute the contents of mystring (printing 'Hi')?
Asked
Active
Viewed 1,433 times
2
-
1With questions like this it's a good idea to explain why you want this behavior since it's clearly not common. By doing so there is a chance someone may suggest a more elegant solution that produces the more specific behavior you're trying to achieve. – Spencer Ruport Feb 01 '11 at 05:10
-
Actually, I'd quite like an answer to this also. I've been thinking for a while about writing an Python prompt style thing for C# using reflection or similar. I know that some exist, but using one which has been written already isn't really a great learning exercise - one of the reasons I refuse to use any libraries outside of .net in my applications - I like to learn things myself. – dotalchemy Feb 01 '11 at 05:16
4 Answers
4
It's possible using the System.Reflection.Emit or System.CodeDom namespaces, but it's not exactly a good idea as there's no mechanism to control what namespaces are and are not allowed. A user could build a string that would wipe your hard drive.
eval()-like functions are huge gaping security holes and should be avoided. The preferred alternative is a DSL (domain specific language).

Joel Coehoorn
- 399,467
- 113
- 570
- 794
1
Yes. Fire up the compiler at runtime and pass in your code. It will spit out executable code. See the System.CodeDom
namespace, especially, System.CodeDom.Compiler
.

jason
- 236,483
- 35
- 423
- 525
1
Need to use reflection to get something like that. C# is not dynamic or interpreted language, so you dont get it out of the box

Community
- 1
- 1

Sarwar Erfan
- 18,034
- 5
- 46
- 57