【发布时间】:2009-12-07 20:10:32
【问题描述】:
我有一个 .NET 程序集,它在编译时定义了一个类型 T,并且我已经实例化了一个对象 my_t 作为这种类型的一个实例。
我想知道是否可以在 .NET 中使用运行时编译器服务重新编译这个类,然后将新的类定义加载到当前正在执行的程序集中,所以当我从 my_t 调用方法时,它们将使用新代码。
我不会更改任何方法的签名,只是更改方法体。
任何 .NET 专家都知道这是否可行?提前感谢您的帮助!
【问题讨论】:
-
我永远不会做这样的事情。为什么不使用继承?
-
是的 - 用例是什么?为什么不使用插件架构?编译你的动态插件并加载它,显然传递你的插件接口。
-
我同意前面的发言者。这样,当我在一个类中调用一个方法时,我无法确定它会做什么即使我可以访问代码。听起来很混乱,这就是 OO 所要防止的。你想要的可能可以通过依赖注入模式来实现
-
虽然上述 cmets 确实专注于最佳实践(我必须同意),但您应该注意,最佳实践并不总是一种选择,奇怪的螺旋球黑客是唯一的方法一些工作(即,也许他不控制程序集,或者调用他想要替换的方法的类)。
标签: .net