使用Reflection.Emit库与CodeDOM在运行时dynamic生成代码有什么优点/缺点? 我正试图在一个系统中生成一些(相对复杂的)dynamic类,这些类是基于运行时可用的XML格式的元数据。 我将生成扩展应用程序集合中的现有类,实现更多接口,添加方法以及覆盖虚拟和抽象成员的类。 在深入实施之前,我想确保select合适的技术。 有关这些不同的代码生成技术如何不同的任何信息将会有所帮助。 此外,任何关于简化或简化工作的开放源代码库的信息都会有用。
从InfoWorld昨天关于新的微软Roslyn的新闻稿 : 这种“解构”编译器最显着的优点是它允许从.Net应用程序中调用整个编译执行过程。 Hejlsberg演示了一个C#程序,它将几个代码片段作为string传递给C#编译器; 编译器将得到的IL汇编代码作为对象返回,然后传递给公共语言运行库(Common Language Runtime,CLR)执行。 瞧! 借助Roslyn,C#在运行时获得dynamic语言生成和调用代码的能力。 我已经能够做到这一点,因为.NET 4与CSharpCodeProvider.CompileAssemblyFromSource的发布,我实际上使用在一个ASP.Net项目前一段时间写的,正是这样做 – 允许用户键入代码到一个文本框,select程序集/名称空间来引用,然后在Windows Azure上执行并显示来自该代码的输出以进行实时环境代码testing。 CodeDom是Roslyn的CodeDom一部分吗? Roslyn比CodeDom什么特别的好处?
Visual Studio IntelliSense for VC ++包含“完整的” EDG C ++parsing器 (也被英特尔等使用)。 由于C#代码DOM是可以插入的(纠正我,如果我错了),C ++代码DOM也可访问? 这可以用来分析VS环境中的一个开放的VC ++项目吗?