确保给定COM可见.NET组件的所有实例共享一个AppDomain

时间:2011-05-13 09:13:16

标签: .net com-interop appdomain

我打算使用COM接口公开.NET组件,我希望.NET类的所有实例共享一个Application Domain。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

如果有可能,那就不容易了。

虽然在已知AppDomain中创建类型的实例很容易(例如。Activator.CreateInstance重载需要AppDomain引用),但问题是获取对目标的引用AppDomain

创建AppDomain并在当前AppDomain内共享该引用很简单:static字段或属性。

分享对第三方代码创建的其他AppDomain的引用是一个问题。我似乎记得BCL的部分内容跨域共享静态(基本上它们每个进程只有一个实例,而不是每个AppDomain,但这种机制通常不能被其他程序集访问。

最好理解为什么你希望能够做到这一点:对你的潜在问题可能有更好的解决方案:为什么你想要一个AppDomain中的所有实例?