首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态代码生成

动态代码生成
EN

Stack Overflow用户
提问于 2009-11-17 11:11:48
回答 6查看 6.6K关注 0票数 5

我目前正在开发一个应用程序,您可以使用它创建“程序”而无需编写源代码,只要您愿意,只需单击&播放即可。

现在的问题是如何从我的数据模型生成一个可执行程序。有很多种可能性,但我不确定哪一种最适合我。我需要生成具有类和命名空间以及可以成为应用程序一部分的所有内容的程序集。

  1. CodeDOM类:我听说过这个类的许多限制和错误。我需要在方法参数和返回值上创建属性。这有支持吗?
  2. 以编程方式创建C#源代码,然后在其上调用CompileAssemblyFromFile :这将有效,因为我可以生成我想要的任何代码,并且C#支持大多数CLR功能。但这不是很慢吗?
  3. 使用反射ILGenerator类:我认为这样可以生成所有可能的.NET代码。但我认为这比其他方法要复杂得多,而且容易出错?
  4. 还有其他可能的解决办法吗?

编辑:该工具用于开发应用程序,它不限于特定的领域。我不知道它是否可以被认为是一种可视化的编程语言。用户可以创建类、方法、方法调用、各种表达式。它不会很有限,因为您应该能够做大多数在实际编程语言中允许的事情。目前,许多东西仍然必须由用户写成文本,但最终的目标是,几乎所有的东西都可以点击在一起。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-11-17 11:50:02

我发现看看动态语言运行时是值得的,它或多或少是为创建基于.NET的高级语言而设计的。

也许还值得看一下以前的一些域特定语言上的堆栈溢出线程,其中包含了一些用于使用DSL的工具的有用链接,这听起来有点像您正在计划的内容,尽管我仍然不太清楚您的目标到底是什么。

票数 4
EN

Stack Overflow用户

发布于 2009-11-17 11:17:37

大多数“点击和播放”应该足够简单,只需将一些预定义的构建块对象粘在一起(可能在边界上使用接口)。意思:你可能不需要做动态代码生成-只是“假装它”。例如,对值使用属性包对象(如DataTable等,尽管这不是我的第一选择)等等。

动态评估的另一个选项是Expression类;特别是在.NET 4.0中,这是非常通用的,并且允许对委托进行编译。

票数 2
EN

Stack Overflow用户

发布于 2009-11-17 11:23:03

做C#源代码生成,不关心速度,直到它重要。C#编译器非常快速。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1748149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档