Этот вопрос является продолжением ответа Марка Гравелла на мой вопрос Create Out-Of-Process COM in C#/.Net ?. Я выбрал его предлагаемое решение, но теперь у меня другая проблема.Как получить доступ к COM-объекту .Net, размещенному на сервере COM + в .NET?
Вот моя ситуация:
- я реализовал «DataProvider» COM-компонент в C#
- Этот компонент размещается в COM + приложения сервера, так что несколько процессы могут получить доступ к той же экземпляр DataProvider
- Типы процессов, которые могут обращаться к поставщику данных через COM, - это скрипты Matlab, VB и .Net.
При создании экземпляра COM DataProvider из Matlab или VB Script запускается механизм COM +, и я могу проверить, что можно использовать один экземпляр DataProvider.
Проблема возникает, когда я пытаюсь получить доступ к управляемому экземпляру COM + из .Net. В принципе, когда COM-компонент основан на DLL .Net, даже при ленивой загрузке, .Net всегда, кажется, находит DLL и создает экземпляр объекта оттуда, пропуская весь COM-механизм. Это ожидается для выступлений, но это не помогает в моем случае.
Сейчас на вопрос: Возможно ли создать экземпляр .Net написанного COM-компонента в приложении .Net с использованием COM-механизма?
Обратите внимание, что следующий код не использует COM механизм:
Type type = Type.GetTypeFromProgID(progID);
return Activator.CreateInstance(type);