Interacting with singleton objects



About singleton objects

Singletons are objects that only support one instance of the object. In ArcObjects, singleton objects require instantiation through the Activator class and require explicit release via the ComReleaser class. Additionally, all ArcObjects references within a thread should only communicate with objects in the same thread. Therefore, at ArcGIS 9.x, singleton objects were singletons per thread and not singletons per process, as detailed in Writing multithreaded ArcObjects code.

Singletons and System.__COMObject

In the topic Using ArcObjects (COM-based) in .NET, the "Runtime callable wrappers" and the "System.__COMObject type" sections show that a strongly typed runtime callable wrapper (RCW) is created when you instantiate the Component Object Model (COM) object by using the new keyword, whereas if the object is preexisting, the type of RCW is the generic System.__ComObject.
Sometimes when you use the new keyword to instantiate a COM object, you get a reference to an existing object. This happens when attempting to instantiate a singleton class that has previously been instantiated.
The .NET Framework is unable to wrap in a strongly typed RCW an instance of an object that has previously been wrapped in the generic System.__ComObject RCW. If your code has encountered this situation, you might receive an error such as Unable to cast object of type System.__ComObject to type <Typename>. See the following code example:
[C#]
ESRI.ArcGIS.Display.IStyleGallery sg = new ESRI.ArcGIS.Framework.StyleGalleryClass();
[VB.NET]
Dim sg As ESRI.ArcGIS.Display.IStyleGallery = New ESRI.ArcGIS.Framework.StyleGalleryClass
The previous error can occur even though you have declared your variable using the interface name rather than the class name, as shown in the previous example. The problem occurs because, when your code instantiates an object, the .NET runtime first attempts to wrap the object in the strongly typed class type (the type stated after the new keyword) before attempting a cast to the interface type. The cast to the strongly typed RCW cannot succeed because the COM object has previously been wrapped in the generic System.__ComObject wrapper. This can occur in situations beyond your control. For example, other ArcObjects tools written in .NET from third parties might wrap an object in the generic wrapper, causing your code to fail.
The solution is to use the Activator class (shown as follows) to safely wrap singleton objects in a strongly typed RCW when you first get a reference to them. Additionally, you should generally always declare variables holding RCWs using an interface rather than a class type.

Using the Activator class to create singletons

If you use the CreateInstance method of the Activator class instead of the new keyword to instantiate singletons, you can avoid such errors as discussed in the previous section, as Activator can get the required metadata to perform the cast. See the following code example:
[C#]
Type t = Type.GetTypeFromProgID("esriFramework.StyleGallery");
System.Object obj = Activator.CreateInstance(t);
IStyleGallery sg = obj as IStyleGallery;
[VB.NET]
Dim t As Type = Type.GetTypeFromProgID("esriFramework.StyleGallery")
Dim obj As System.Object = Activator.CreateInstance(t)
Dim pApp As ESRI.ArcGIS.Display.IStyleGallery = obj

Instantiating the AppRef class

You can use the preceding technique to instantiate the AppRef class; however, the AppRef class can only be created in an ArcGIS application. (The type is the generic System.__ComObject RCW.) See the following code example:
[C#]
Type t = Type.GetTypeFromProgID("esriFramework.AppRef");
System.Object obj = Activator.CreateInstance(t);
ESRI.ArcGIS.Framework.IApplication pApp = obj as ESRI.ArcGIS.Framework.IApplication;
[VB.NET]
Dim t As Type = Type.GetTypeFromProgID("esriFramework.AppRef")
Dim obj As System.Object = Activator.CreateInstance(t)
Dim pApp As ESRI.ArcGIS.Framework.IApplication = obj

Singleton objects in ArcObjects

The following table lists the singleton objects in ArcGIS. The types with an asterisk (*) are per process singletons (exceptions to the per thread rule).
Class
Library
ProgID
GUID
Location
AccessWorkspaceFactory DataSourcesGDB esriDataSourcesGDB.AccessWorkspaceFactory dd48c96a-d92a-11d1-aa81-00c04fa33a15 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
ActionEnvironment* TrackingAnalyst esriTrackingAnalyst.ActionEnvironment 1e18428c-86eb-4678-a987-f8157feb77cf ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
AGAnimationUtils Animation esriAnimation.AGAnimationUtils 2835514b-1a02-4142-8474-31d48d9063a8 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
AGSServerConnectionFactory GISClient esriGISClient.AGSServerConnectionFactory 7932a86e-f371-4c64-ab84-9e83dda2581b ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
AMSWorkspaceFactory TrackingAnalyst esriTrackingAnalyst.AMSWorkspaceFactory a677ab59-2fb8-11d5-b7e2-00010265adc5 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
AnimationControlsDialog AnimationUI esriAnimationUI.AnimationControlsDialog 0a44bca2-ec21-4ea3-85d3-a0aae57127e5 ArcGIS for Desktop
AnimationCreateKeyframeDialog AnimationUI esriAnimationUI.AnimationCreateKeyframeDialog 8c253bb9-4da2-4ab5-aceb-c6686006c37a ArcGIS for Desktop
AnimationFromPathDialog AnimationUI esriAnimationUI.AnimationFromPathDialog dfde1249-74bb-48d3-aae8-b3155f25fd52 ArcGIS for Desktop
AnimationLayerGroupDialog AnimationUI esriAnimationUI.AnimationLayerGroupDialog ebf7b926-ee3c-4773-b81e-a7fef23cd7ce ArcGIS for Desktop
AnimationManagerDialog AnimationUI esriAnimationUI.AnimationManagerDialog f68848ca-f6af-40aa-8eaf-3305890aee5c ArcGIS for Desktop
AnimationTypeCamera 3DAnalyst esri3DAnalyst.AnimationTypeCamera 500f4707-a798-11d5-b2a0-00508bcdde28 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
AnimationTypeGlobeCamera GlobeCore esriGlobeCore.AnimationTypeGlobeCamera d4565495-e2f9-4d89-a8a7-d0b69fd7a424 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
AnimationTypeGlobeLayer GlobeCore esriGlobeCore.AnimationTypeGlobeLayer 7ccba704-3933-4d7a-8e89-4dfee88aa937 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
AnimationTypeLayer 3DAnalyst esri3DAnalyst.AnimationTypeLayer 24aa4279-adf3-11d5-b2a0-00508bcdde28 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
AnimationTypeMapLayer Animation esriAnimation.AnimationTypeMapLayer 0a965644-11f1-4901-a0cf-9989bfd27b6d ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
AnimationTypeMapView Animation esriAnimation.AnimationTypeMapView fd22a714-0eef-4312-8703-d81e5476e28a ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
AnimationTypeScene 3DAnalyst esri3DAnalyst.AnimationTypeScene 24aa427a-adf3-11d5-b2a0-00508bcdde28 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
AnimationTypeTimeLayer Animation esriAnimation.AnimationTypeTimeLayer a85b10a9-9eab-4f93-9259-5fbae98000eb ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
AppRef* Framework esriFramework.AppRef e1740ec5-9513-11d2-a2df-0000f8774fb5 ArcGIS fr Desktop
ArcInfoWorkspaceFactory DataSourcesFile esriDataSourcesFile.ArcInfoWorkspaceFactory 1d887452-d9f2-11d1-aa81-00c04fa33a15 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
CadWorkspaceFactory DataSourcesFile esriDataSourcesFile.CadWorkspaceFactory 9e2c27ce-62c6-11d2-9aed-00c04fa33299 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
CieLabConversion Display esriDisplay.CieLabConversion 137e39dc-3e98-11d2-aaf7-00c04fa334b3 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
CommandsEnvironment Controls esriControls.CommandsEnvironment 46d9c72e-4dc2-4589-b809-a51fc4a57684 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
DddEnvironment 3DAnalystUI esri3DAnalystUI.DddEnvironment 94305472-592e-11d4-80ee-00c04fa0adf8 ArcGIS for Desktop
DddServerEnvironment Geodatabase esriGeodatabase.DddServerEnvironment 3b6c52a4-7231-4189-b341-c30e7fb58bcf ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
DDDToolbarEnvironment 3DAnalystUI esri3DAnalystUI.DDDToolbarEnvironment 2d73b143-8f1c-11d4-a10f-00508bd60cb9 ArcGIS for Desktop
DEGdbUtilities Geodatabase esriGeodatabase.DEGdbUtilities 48f71b4d-72ce-42aa-a45c-5c180f6e78e8 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
DEUtilities Geoprocessing esriGeoprocessing.DEUtilities f0c2aa3e-b2f1-4208-9843-6a3c70a4680a ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
DummyGraduatedMarkerLayer Carto esriCarto.DummyGraduatedMarkerLayer 238ccd1a-7fbc-11d2-87dc-0000f8751720 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
DummyLayer Carto esriCarto.DummyLayer 238ccd19-7fbc-11d2-87dc-0000f8751720 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
EngineEditor Controls esriControls.EngineEditor 4afaf64d-0cb2-4adb-bc88-9fb07548d10d ArcGIS Engine
EngineNetworkAnalystEnvironment Controls esriControls.EngineNetworkAnalystEnvironment 7da28a78-4027-4cc8-a8c3-fd31c6f22e9e ArcGIS Engine
EnvironmentManager System esriSystem.EnvironmentManager 8a626d49-5f5e-47d9-9463-0b802e9c4167 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
ErrorDialog SystemUtility esriSystemUtility.ErrorDialog 40accbda-720a-4b17-980b-b173f791958e ArcGIS Engine (C++ only)
ErrorMessage SystemUtility esriSystemUtility.ErrorMessage 672fb3aa-c6de-44e0-b767-c53d33ef9879 ArcGIS Engine (C++ only)
ExcelWorkspaceFactory DataSourcesOleDB esriDataSourcesOleDB.ExcelWorkspaceFactory 30f6f271-852b-4ee8-bd2d-099f51d6b238 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
ExtensionManager System esriSystem.ExtensionManager 6120bc0a-3d90-4274-97ca-713c41f1faff ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
FileGDBWorkspaceFactory DataSourcesGDB esriDataSourcesGDB.FileGDBWorkspaceFactory 71fe75f0-ea0c-4406-873e-b7d53748ae7e ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
FindDialog CatalogUI esriCatalogUI.FindDialog ad0b37a9-d396-11d3-a6f3-0008c7d3ae50 ArcGIS for Desktop
FormatList DataSourcesRaster esriDataSourcesRaster.FormatList 53b7c0b9-41fb-4b00-b51a-fa5cc5b785fe ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
GeoDatabaseHelper Geodatabase esriGeodatabase.GeoDatabaseHelper 4e35da0b-c5d1-4ac9-bd62-b36b4155ee4b ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
GMxEffectsToolbarEnvironment ArcGlobe esriArcGlobe.GMxEffectsToolbarEnvironment 3eafa611-dc74-4c29-bab6-c401e7c76ac6 ArcGIS for Desktop
GPGlobeFunctionFactory GlobeCore esriGlobeCore.GPGlobeFunctionFactory 9e8cedbd-fd6f-41d8-93a0-35207790ba08 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
GPHolder Geoprocessing esriGeoprocessing.GPHolder 602b0005-0ad2-41f1-a831-c640d8586cad ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
GPSAUtil SpatialAnalyst esriSpatialAnalyst.GPSAUtil 0c4404c3-276c-475b-bf33-dd35082e5e3a ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
GPServerFunctionFactory Geoprocessing esriGeoprocessing.GPServerFunctionFactory f8ac2c04-deec-43f4-86ef-246f91f12856 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
GpsPositionDialog ArcMapUI esriArcMapUI.GpsPositionDialog f56723f3-063d-4b4a-89b9-f03afadf2078 ArcGIS for Desktop
GPUtilities Geoprocessing esriGeoprocessing.GPUtilities 59e42101-2f33-4b6d-8cee-eed9d98d1957 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
GxCatalogROT CatalogUI esriCatalogUI.GxCatalogROT 04faa368-046b-4cfe-81cb-1c8201f9cad3 ArcGIS for Desktop
GxDatabaseExtensions Catalog esriCatalog.GxDatabaseExtensions 27E179F2-4F3E-11D3-9F52-00C04F6BDF06 ArcGIS for Desktop
IdentifyDialog CartoUI esriCartoUI.IdentifyDialog f8aab776-8b1e-11d3-9f7a-00c04f6bc886 ArcGIS for Desktop
IMSWorkspaceFactory GISClient esriGISClient.IMSWorkspaceFactory bac84d58-fa9d-11d3-9f48-00c04f79927c ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
InMemoryWorkspaceFactory DataSourcesGDB esriDataSourcesGDB.InMemoryWorkspaceFactory 7f2bc55c-b902-43d0-a566-aa47ea9fda2c ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
LabelEnvironment Carto esriCarto.LabelEnvironment 76765b96-ce78-11d2-9f36-00c04f6bc6a5 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
LayerEffectsEnvironment ArcMapUI esriArcMapUI.LayerEffectsEnvironment 377aba22-2019-11d3-9f97-00c04f6bc78e ArcGIS for Desktop
LocatorManager Location esriLocation.LocatorManager e0f10b7a-eb7c-11d2-9f47-00c04f8ed1c4 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
MemoryRelationshipClassFactory Geodatabase esriGeodatabase.MemoryRelationshipClassFactory 2fc5c57b-eb92-4a61-bbc5-434e388bf3b9 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
MessageLogger System esriSystem.MessageLogger a2e96efd-d501-433b-941f-83447916b8f6 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
MetadataSynchronizer Geodatabase esriGeodatabase.MetadataSynchronizer c10124ee-3648-445e-a16b-9d2755fbd690 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
MonitorSettings Display esriDisplay.MonitorSettings 9db25fe0-3c75-11d2-aaf6-00c04fa334b3 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
MyPlaceCollection Controls esriControls.MyPlaceCollection 83307360-8be1-4df2-b301-1e619a965b5c ArcGIS Engine
NADirectionsWindowManager NetworkAnalystUI esriNetworkAnalystUI.NADirectionsWindowManager bc36cf3b-1fc1-461d-92df-ca51cdc9c84c ArcGIS for Desktop
NetCDFWorkspaceFactory DataSourcesNetCDF esriDataSourcesNetCDF.NetCDFWorkspaceFactory df61a9e1-b8e2-498f-bde5-98de42e801f9 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
NetworkIdentifyDialog NetworkAnalystUI esriNetworkAnalystUI.NetworkIdentifyDialog e4c692c6-f721-4ba4-a000-83893af482ae ArcGIS for Desktop
OLEDBWorkspaceFactory DataSourcesOleDB esriDataSourcesOleDB.OLEDBWorkspaceFactory 59158055-3171-11d2-aa94-00c04fa37849 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
PCCoverageWorkspaceFactory DataSourcesFile esriDataSourcesFile.PCCoverageWorkspaceFactory 6de812d2-9ab6-11d2-b0d7-0000f8780820 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
RasterAnalysisToolbarEnvironment SpatialAnalystUI esriSpatialAnalystUI.RasterAnalysisToolbarEnvironment 89daddfd-79ec-4f5e-8252-ae716a89ac15 ArcGIS for Desktop
RasterAttributeTableManager DataSourcesRaster esriDataSourcesRaster.RasterAttributeTableManager fe143bf3-8d4e-415a-a7e9-a3ac29ab65a7 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
RasterDefaultsEnv Carto esriCarto.RasterDefaultsEnv eb0d0573-c109-11d2-9f43-00c04f8ed21a ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
RasterSettings SpatialAnalystUI esriSpatialAnalystUI.RasterSettings 8ac2f518-ed49-11d2-9f40-00c04f8ed1d7 ArcGIS for Desktop
RasterStatus DataSourcesRaster esriDataSourcesRaster.RasterStatus 83220700-5844-11d4-8d9b-00c04f5b87b2 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
RasterWorkspaceFactory DataSourcesRaster esriDataSourcesRaster.RasterWorkspaceFactory 4c91d963-3390-11d2-8d25-0000f8780535 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
RelQueryTableFactory Geodatabase esriGeodatabase.RelQueryTableFactory 9b4e4d0c-753a-43bb-83fb-ba16f6652e1c ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
SAExtension SpatialAnalystUI esriSpatialAnalystUI.SAExtension 3c5059fe-9f15-401a-94ed-eed914d73e3e ArcGIS for Desktop
SchematicProjectMgr Schematic esriSchematic.SchematicProjectMgr c578262a-16c2-4f5a-a526-d738addc8208 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
SchematicWorkspaceFactory Schematic esriSchematic.SchematicWorkspaceFactory e18fc71c-fda7-4c7b-a824-c024d7900b5d ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
ScratchWorkspaceFactory DataSourcesGDB esriDataSourcesGDB.ScratchWorkspaceFactory 06dc8e4c-951c-11d2-ae75-080009ec732a ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
SDCWorkspaceFactory DataSourcesFile esriDataSourcesFile.SDCWorkspaceFactory 34dae34f-dbe2-409c-8f85-ddbb46138011 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
SdeWorkspaceFactory DataSourcesGDB esriDataSourcesGDB.SdeWorkspaceFactory d9b4fa40-d6d9-11d1-aa81-00c04fa33a15 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
SelectionEnvironment Carto esriCarto.SelectionEnvironment e3875b71-d9f5-11d1-add4-080009ec732a ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
ServerStyleGallery Display esriDisplay.ServerStyleGallery 9cdcf7da-63b8-4f23-b769-1db1bceadd35 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
ShapefileWorkspaceFactory DataSourcesFile esriDataSourcesFile.ShapefileWorkspaceFactory a06adb96-d95c-11d1-aa81-00c04fa33a15 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
SpatialReferenceEnvironment Geometry esriGeometry.SpatialReferenceEnvironment 7b5b7020-c4f6-11d1-bc92-0000f875bcce ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
StreetMapWorkspaceFactory DataSourcesFile esriDataSourcesFile.StreetMapWorkspaceFactory ae2469e8-e110-4cd6-b3f4-a756cbf921ca ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
StyleGallery Framework esriFramework.StyleGallery ac0e9827-91cb-11d1-8813-080009ec732a ArcGIS for Desktop
SxAnimationEnvironment 3DAnalyst esri3DAnalyst.SxAnimationEnvironment 592d0b58-82ad-11d5-b29b-00508bcdde28 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
SxEffectsToolbarEnvironment ArcScene esriArcScene.SxEffectsToolbarEnvironment 80e3f11d-c4bb-11d4-b27e-00508bcdde28 ArcGIS for Desktop
SymbologyEnvironment Display esriDisplay.SymbologyEnvironment 65856cd8-ad04-11d3-9fc2-00c04f6bc8dd ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
SystemHelper System esriSystem.SystemHelper be49d696-3c46-4b81-960b-f67d1bbd238d ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
TAExtension TrackingAnalystUI esriTrackingAnalystUI.TAExtension d53bf20f-24fb-11d4-b34c-00104ba2abcc ArcGIS for Desktop
TextFileWorkspaceFactory DataSourcesOleDB esriDataSourcesOleDB.TextFileWorkspaceFactory 72ce59ec-0be8-11d4-ae03-00c04fa33a15 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
TexturePersistenceProperties Geometry esriGeometry.TexturePersistenceProperties 01cfeaf1-4d26-4084-84f8-7d2fda7c40d9 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
TinWorkspaceFactory DataSourcesFile esriDataSourcesFile.TinWorkspaceFactory ad4e89d9-00a5-11d2-b1ca-00c04f8edeff ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
TMS_MarshalHelper TrackingAnalyst esriTrackingAnalyst.TMS_MarshalHelper 6e5bff39-dcc0-11d6-b861-00010265adc5 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
ToolboxWorkspaceFactory Geoprocessing esriGeoprocessing.ToolboxWorkspaceFactory e9231b31-2a34-4729-8de2-12cf39674b1b ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
TrackingEnvironment TrackingAnalyst esriTrackingAnalyst.TrackingEnvironment ef13642c-42da-4095-8a5b-c4f9c6a7bbe3 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
VpfWorkspaceFactory DataSourcesFile esriDataSourcesFile.VpfWorkspaceFactory 397847f9-c865-11d3-9b56-00c04fa33299 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
WMSConnectionFactory GISClient esriGISClient.WMSConnectionFactory f7c34345-87ce-4ab5-9ca8-2012d7241075 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
WorkspaceFactory Geodatabase esriGeodatabase.WorkspaceFactory FBF5715D-A05D-11D4-A64C-0008C711C8C1 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
XMLTypeMapper System esriSystem.XMLTypeMapper dcb0f748-2d17-40b5-90c2-7d0b39660405 ArcGIS for Desktop, ArcGIS Engine, ArcGIS for Server
* These are singletons that only support one instance of the object per process.


See Also:

Releasing COM references
Using ArcObjects (COM-based) in .NET