Убедитесь, что все экземпляры данного COM-видимого компонента .NET совместно используют один домен приложений. - PullRequest
0 голосов
/ 13 мая 2011

Я планирую предоставить компонент .NET с интерфейсом COM, и я хотел бы, чтобы все экземпляры класса .NET разделяли один домен приложения.

Каков наилучший способ достижениячто?

1 Ответ

1 голос
/ 13 мая 2011

Если это возможно, это будет непросто.

Хотя создание экземпляра типа в известном AppDomain легко (например, Activator.CreateInstance перегрузка, которая принимает ссылку AppDomain), проблема будет получение ссылки на цель AppDomain.

Создать AppDomain и поделиться этой ссылкой в ​​текущем AppDomain просто: поле или свойство static.

Проблема с передачей ссылки на другие домены приложений, созданные сторонним кодом. Кажется, я вспоминаю, что части BCL совместно используют статические свойства в разных доменах (по сути, они имеют один экземпляр на процесс, а не на AppDomain, но этот механизм обычно недоступен для других сборок.

Вероятно, лучше понять, почему вы хотите сделать это: возможно, существует лучшее решение вашей основной проблемы: почему вы хотите, чтобы все экземпляры были в одном AppDomain?

...