c# - 如何在运行时向 DLL 添加代码

标签 c# .net dll

比方说,在我的 .NET 类的构造函数中,我想编写代码来动态地向我的类添加方法。所以现在当我反射(reflection)我的类(class)时,我会看到这些方法,而当我第一次构建项目时,这些方法并不存在

我怎样才能做到这一点?

我一直在查找 CodeDom,但它有点令人困惑

最佳答案

一旦加载程序集,就无法更改它。您可以使用 Reflection.Emit 或 CodeDom 来动态编译一个新的程序集,一个与您的类一样的类 + 额外的方法,但它不会更改现有的(至少在运行时存在的)类。潜在地,您可以将您的类加载到一个单独的 AppDomain 中,创建一个新类,该类是它的“副本”和附加项,然后将该程序集加载到您的主 AppDomain 中(并卸载您加载原始类的那个)。您仍在创建一个新类,而不是添加到现有类,但效果是相似的。

但是,您可以使用代码注入(inject)在加载类之前插入代码。有一些适用于 .NET 的代码注入(inject)框架可以帮助解决这个问题……但这与您的具体问题不同。

关于c# - 如何在运行时向 DLL 添加代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/886143/

相关文章:

c# - 静态变量和多线程

c# - 从我的 WPF 应用程序和 C# 库跟踪内存中的敏感数据

.net - 域驱动的设计:微服务(CQRS + ES),客户端可见性和元数据

c# - 创建带有启用/禁用按钮的登录表单

visual-studio-2005 - vcredist_x86.dll 和版本 8.0.50727.4053

visual-c++ - cxcore210d.dll丢失

c# - 如何使用 asp.net mvc4 openid api 获取电子邮件 ID

c# - ShellView 或 MainWindow 作为应用程序中的主视图?

.net - 如何分别渲染用户控件

c++ - 识别Win32/Win64中的数据段