2010-06-01 99 views
1

我正在使用反射在运行时发出一些动态类型。为什么并不重要。删除由Reflection Emit创建的动态生成类型

我现在的问题是使用像AssemblyBuilder,ModuleBuilder和TypeBuilder这样的类,类型是完全生成的,我可以在没有问题的情况下使用它。

但是,可能有些情况下我可能需要更改生成类型的定义。如何从生成的程序集中删除生成的类型?

回答

3

您需要在自己的AppDomain中生成类型并卸载整个事物。即便如此,您也必须小心,不要让实例跨越域边界,否则可能会将该类型加载到主域中。

+0

一个提示:虽然在您自己的AppDomain中引用这些类型会吸引它们并且破坏重新生成它们的能力,但事实恰恰相反。换句话说,创建您打算在新的AppDomain中运行的类是完全正确的。唯一的技巧就是你需要在该AppDomain中实例化这样一个类,然后通过.NET远程调用来调用它。这有点乱,但不是*很难。 – 2010-08-03 16:35:10