我想实现这么一个东西
代码很简单
StringBuilder strcode = new StringBuilder();
strcode.AppendLine("Text1 txt=new Text1()");//在strcode追加字符串
textBox1.Text = strcode.ToString();
我希望strcode追加的字符串“Text1 txt=new Text1()”,能在编译器里面执行。也就是说字符串能够在运行时被编译。 --------------------编程问答-------------------- 也就是说字符串能够在运行时被编译?
什么意思? --------------------编程问答-------------------- Text1 txt=new Text1();
这句话因为是字符串所以编译器不会把他作为 c#语言执行。
我的目的是希望能把字符串里的东西执行。 --------------------编程问答-------------------- 建议LZ研究下这个命名空间 system.codedom --------------------编程问答-------------------- Text1 txt=new Text1()中txt是个对象,所以你要实现的功能是不是可以这样实现,在Text1这个类中override一下ToString这个方法(这个方法里面就是你到底想把这个对象转化成什么样字符串的方法),然后:
strcode.AppendLine("Text1 txt=new Text1()");改为
Text1 txt=new Text1();
strcode.AppendLine(txt.ToString());
欧了。
--------------------编程问答-------------------- 两个思路
1.解析字符串,利用反射动态创建对象
2.动态编译http://www.cnblogs.com/cxd4321/archive/2008/07/09/1239150.html --------------------编程问答-------------------- 谢谢大家,我想用c#做一个解释器试试 --------------------编程问答-------------------- 第一个能具体说一下吗 --------------------编程问答--------------------
lz的勇气可嘉,不过解释器这个东西的复杂度相当高。
支持一下。 --------------------编程问答-------------------- 单独的一个 Text1 txt=new Text1(); 你只能分析出进行操作了.
如果是代码 你可以考虑使用
System.CodeDom.Compiler和Microsoft.CSharp
你可以参考下面
http://blog.csdn.net/zgke/archive/2009/03/04/3955490.aspx --------------------编程问答-------------------- 1、C#内置了编译器的使用类,在System.Codedom命名空间下,可以运行时把字符串当作源码编译
2、C#2.0中支持eval方法,可以把字符串当作源码执行,但相对较简单 --------------------编程问答-------------------- 了解下System.Codedom。。。。 --------------------编程问答-------------------- 好象VS自带了一个编译软件,是命令行形式的,应该可以用C#调用吧 --------------------编程问答-------------------- 参考SharpDevelop吧 --------------------编程问答-------------------- 加一个@符号就可以啦
StringBuilder strcode = new StringBuilder();
strcode.AppendLine(@"Text1 txt=new Text1()");//在strcode追加字符串
textBox1.Text = strcode.ToString();
补充:.NET技术 , C#