I have a .Net object that I expose to COM. I implement this as a singleton
and create my own class factory. In keeping with the fact there should only
be one instance of this object, I want to have only a private constructor.
However, regasm generates the type library and marks the object
noncreatable. Is there a way to get the type library generated properly and
still have only a private constructor?

Signature
Howard Swope [howardsnewsATspitzincDOTcom]
Software Engineer
Spitz, Inc [http://www.spitzinc.com]
pmoore - 24 Nov 2004 19:19 GMT
COM does not allow constructors to have paramters. I assume you have a
static factory method on the object that create the instance(s). You cant
call static methods either (see later) since COM doesnt have this concept.
So either make a factory class that has a no param constructor, that has a
makeObject method that returns the object you want
set fact = CreateObject("FooFactory")
set foo = fact.makeFoo("wibbly", "wobbly")
Or you can call the static method using the horrible code shown in Adam
Nathan's excellent COM interop book (p482). I would not do this since you own
the component and can change its design
> I have a .Net object that I expose to COM. I implement this as a singleton
> and create my own class factory. In keeping with the fact there should only
> be one instance of this object, I want to have only a private constructor.
> However, regasm generates the type library and marks the object
> noncreatable. Is there a way to get the type library generated properly and
> still have only a private constructor?