.NET AppDomains可以这样做吗?

Elo*_*off 3 .net c#

我花了好几个小时阅读AppDomains,但我不确定它们是否像我希望的那样工作.

如果我有两个类,AppDomain#1中的泛型Foo <T>,AppDomain#2中的Bar:

App Domain#1是应用程序.App Domain#2就像一个插件,可以动态加载和卸载.

AppDomain#2想要创建Foo <Bar>并使用它.Foo <T>在内部使用AppDomain#1中的许多类.

我不希望AppDomain#2使用带有反射的对象foo,我希望它使用Foo <Bar> foo,其中包含所有静态类型和编译速度.考虑到从未卸载包含Foo <T>的AppDomain#1,可以做到这一点吗?

如果是这样,使用Foo <Bar>时是否会在此处进行任何远程处理?

当我卸载AppDomain#2时,类型Foo <Bar>被销毁?

编辑 SO剥离我的所有<>,手动添加它们.

Han*_*ant 6

您在问题中混合了类型和对象,这使得很难回答.AD中的代码使用也在其他AD中使用的类型没有问题,它只是加载程序集.但是AD有自己的垃圾收集堆,你不能直接引用住在另一个AD中的对象.它们需要在AD边界上进行序列化.是的,通过IpcChannel进行远程处理将会这样做.