是否有可能编写在运行时生成类、方法、成员的代码?

本文关键字:方法 成员 代码 有可能 运行时 是否 | 更新日期: 2023-09-27 18:18:11

是否有可能在运行时使用。net (c#)编写生成类,方法,成员的代码?

要了解更多细节,请考虑以下场景:

创建一个动态工作流程序,使用户能够创建自己的进程、活动和编写动态SQL SPs,…,并收集所有这些东西,然后在运行时动态生成一个,成员变量,成员函数 ui 条件,…换句话说,你自己的动态代码工厂框架 !

是否有可能编写在运行时生成类、方法、成员的代码?

是的,这有多种选择:

  • 使用CodeDOM (System.CodeDom命名空间)
  • 使用System.Reflection.Emit命名空间
  • 创建c#代码,然后用Microsoft.CSharp.CSharpCodeProvider 编译
  • 对于单个方法,创建表达式树,然后将其编译为委托
  • 使用Roslyn CTP编译c#代码或创建自己的AST并编译

简短的回答是肯定的。你必须研究以下技术:

CodeDom

Windows Wordflow Foundation

如果它是有用的,可以讨论:一个能够在一个特定的模式下"动态"编程工作流的人可能更喜欢自己手工编写代码。

在这种情况下,使用强类型的另一种选择是,您可以考虑使用
动态对象,允许功能齐全的动态行为。

可能比在运行时生成的强类型更合适,在这个的情况下。

快速回答:是的!

关于如何实现这一目标的详细信息,您将希望通过查看Reflection开始学习。

下一步是在互联网上寻找其他资源,并在SO上快速搜索这个问题:

如何在运行时使用Reflection.emit

创建方法

动态语言运行库也值得一看