我打算使用COM接口公开.NET组件,我希望.NET类的所有实例共享一个Application Domain。
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
如果有可能,那就不容易了。
虽然在已知AppDomain
中创建类型的实例很容易(例如。Activator.CreateInstance
重载需要AppDomain
引用),但问题是获取对目标的引用AppDomain
。
创建AppDomain
并在当前AppDomain
内共享该引用很简单:static
字段或属性。
分享对第三方代码创建的其他AppDomain的引用是一个问题。我似乎记得BCL的部分内容跨域共享静态(基本上它们每个进程只有一个实例,而不是每个AppDomain
,但这种机制通常不能被其他程序集访问。
最好理解为什么你希望能够做到这一点:对你的潜在问题可能有更好的解决方案:为什么你想要一个AppDomain
中的所有实例?