将字符串转换为命令行? c#mac

时间:2013-07-25 01:17:14

标签: c#

所以我对C#有些新意,我不能为我的生活找出如何做到这一点。我已经阅读了如何使用CodeDom http://msdn.microsoft.com/en-us/library/saf5ce06.aspx来做到这一点,但我无法得到任何工作。例如:

string toExecute = "Console.WriteLine('Hello world')";

//如何使它成为可执行的toExecute。即:执行(toExecute);

输出:

你好世界!


我已经尝试了这个并且我一直收到错误(我甚至不理解它!):

string toExecute = "Console.WriteLine('Hello World')";
Type thisType = this.GetType();
MethodInfo theMethod = thisType.GetMethod(toExecute);
theMethod.Invoke(this, null);

所以,如果有人能给我一个如何做这件事并解释它的例子,那么我可能会从那里工作(如果它甚至可能)。 提前致谢

2 个答案:

答案 0 :(得分:2)

我没有在这台电脑上使用我的视觉工作室,所以没有运行它,但我认为这应该有效:

object[] parametersArray = new object[] { "Hello" };
MethodInfo writeLine = typeof(Console).GetMethod("WriteLine", new Type[] {typeof(string)});
writeLine.Invoke(null, parametersArray)

也许发布你想要完成的东西,做这种东西是痛苦的屁股,特别是如果你更新.net

参考:http://msdn.microsoft.com/en-us/library/a89hcwhh.aspx

答案 1 :(得分:0)

CodeDOM是最简单的方法之一。但无论如何,这是一项相当困难的任务,因为C#不是为此而设计的。它是静态编译语言的基本基础之一,所有代码必须事先在编译时知道,因为它不会像使用普通字符串那样动态解释,即使它包含有效代码。真的,重要的是执行的是exe / dll中的字节码。

尝试这些事情通常也不是一个好主意,因为你完全失去了编译器给你的安全性,并且当动态生成的代码中出现问题时,使代码更难调试。这是一个非常先进的功能,如果你是新手,不适合学习。这样的事情在其他动态语言中很常见,但对于C#来说非常复杂。

顺便说一下,你想特别做点什么吗?或者只是询问是否可能?可能有更简单的方法来做同样的事情,而不需要求助于运行时代码生成。