Обратите внимание, что вам придется заставить свой COM-объект работать вне процесса (выставляется EXE).
Вам действительно нужен один и тот же COM-объект, используемый везде?Или вы просто хотите управлять одними и теми же базовыми ресурсами из одной контрольной точки?
COM не поддерживает шаблон Singleton напрямую, но и не запрещает его строго.Просто нет параметра реестра, который говорит "всегда обслуживать один и тот же объект".Фактически, стандартный механизм создания экземпляров COM требует , чтобы каждый раз при его вызове возвращался действительно новый объект (этот механизм используется для внутренних операций new
операторов и CreateInstance()
).Это означает, что для создания правильного синглтона COM вы не можете позволить своим клиентам создавать его самостоятельно.Это все можно сделать, но это сложно и редко необходимо.
Ваша лучшая ставка - достаточно забавная - вообще НЕ иметь COM-синглтона.Позвольте клиенту создавать столько разных объектов, сколько он хочет.Вместо одного COM-объекта разрешите несколько COM-объектов, но сделайте эти объекты «прокладками», которые взаимодействуют с реализацией одного внутреннего объекта.Не раскрывайте внутреннюю одноэлементную реализацию непосредственно как COM-объект.Вы избежите многих головных болей.