Пользовательская фабрика класса COM для управляемого внутрипроцессного сервера

Я смотрю на реализацию пользовательской логики активации COM для управляемой библиотеки классов, в MkParseDisplayName/BindToObject манера

Таким образом, создание объекта из VB может выглядеть так:

obj = GetObject("clsid:12341234-1234-1234-1234-123412341234:!UniqueObjectId")

Это не будет проблемой для сервера вне процесса (используя CoRegisterClassObject). Тем не менее, для внутрипроцессного сервера, мне нужно изменить реализацию DllGetClassObject, который обычно предоставляется mscoree.dll, Это вообще возможно?

Единственный другой вариант, который я вижу, - это создать синглтон-объект C#, который будет служить фабрикой классов, и реализовать на нем IParseDisplayName. Теоретически, такой синглтон может также зарегистрировать IClassFactory объект класса с CoRegisterClassObject(CLSCTX_INPROC_SERVER), но сам синглтон должен был бы сначала получить экземпляр в любом случае.

0 ответов

Другие вопросы по тегам