我一直对在 C# 中在运行时动态创建类感到好奇,偶然发现了这篇文章。 http://olondono.blogspot.com/2008/02/creating-code-at-runtime.html我很想听听关于在运行时构建类的一些优缺点。
有什么意见吗?
最佳答案
元编程具有构建时代码生成的所有优点,但没有额外的代码步骤。这在库代码中很常见,例如 ORM、序列化程序、某些类型的 AOP、DI/IoC 容器等。
- + 避免了额外的构建步骤或编写普通代码的需要
- + 这样的代码可以处理运行时实际的情况,而不必处理任何不常见的边缘情况或包装器周围的大量包装器(装饰器模式)
- + 允许在元数据仅在运行时已知的情况下进行代码生成
- + 运行时 IL 可以更多地访问私有(private)字段等,这要归功于
DynamicMethod
可以与类型相关联;完全生成的 (dll) 代码需要[InternalsVisibleTo]
或类似的,这可能是不可能的 - - 并非所有系统都支持 运行时代码生成;它在某些服务器设置、紧凑框架、iPhone 等上被禁用
- - 这样做错误丑陋。无论如何,这都不是普通代码。
- - 它需要很好地理解事物在幕后的实际运作方式
- + 如果迫使您真正深入了解事物在幕后的实际运作方式
我目前正在重写现有库以使用运行时 IL 生成;这是非常有益的,我很高兴;但它不同于我以前写过的任何东西。
关于c# - 在运行时创建 C# 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2659728/