Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / .NET Framework / Interop / November 2004

Tip: Looking for answers? Try searching our database.

.Net object with private constructor marked as noncreatable in type library

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Howard Swope - 23 Nov 2004 20:24 GMT
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?

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.