c# - 动态代码生成

标签 c# .net reflection code-generation codedom

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

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

  1. CodeDOM 类:我听说这个类有很多限制和错误。我需要在方法参数和返回值上创建属性。支持吗?

  2. 以编程方式创建 C# 源代码,然后对其调用 CompileAssemblyFromFile:这可行,因为我可以生成我想要的任何代码,而且 C# 支持大多数 CLR 功能。但这不会很慢吗?

  3. 使用反射 ILGenerator 类:我认为用它我可以生成所有可能的 .NET 代码。但我认为这比其他方法更复杂且更容易出错?

  4. 还有其他可能的解决方案吗?

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

最佳答案

你我发现看Dynamic Language Runtime是有益的它或多或少是为创建基于 .NET 的高级语言而设计的。

也许还值得看看之前的一些 Stack Overflow threads on Domain Specific Languages其中包含一些指向使用 DSL 的工具的有用链接,这听起来有点像您的计划,但我仍然不太清楚您的目标到底是什么。

关于c# - 动态代码生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1748149/

相关文章:

c# - System.Web.Http.Owin WebApi2 安装问题

.net - 如何使用 ArcGIS .Net SDK 离线查询 DTED?

javascript - 嵌套 JSON 值不绑定(bind) MVC

actionscript-3 - 从 Class 对象获取 AS3 实例方法引用

JSON Unmarshal 不适用于 relect 创建的动态结构

c# - 使用 Mysql 设置 Entity Framework 6 - 代码优先

c# - .Net Core 模拟无法与 Process.Start 一起使用

c# - ReadAsync 退出,无法在调试中跟踪

c# - IsDirty 标志模式