Extending ArcObjects


Summary
As a developer, there are many ways you can customize your users' ArcGIS experience. One way is to build custom components that integrate into the framework to provide additional functionality.


About extending ArcObjects

As a developer, you can provide your users with components that work within the ArcGIS applications. Components customize the framework by providing custom commands, tools, toolbars, and other graphical user interface (GUI) components. Mapping and visualization components provide custom symbols, renderers, elements, and layers for maps. Extending the geodatabase with components, allows you to provide extensions that provide custom behavior to all clients accessing a geodatabase and plug-in data sources that integrate new data formats into ArcGIS applications. The editor framework can be extended to create custom editing behavior. You can even develop custom geoprocessing function tools.
The following include some advantages of building a custom component:
  • They can be easily delivered to end users via custom setup programs.
  • The code and logic behind the customization can be hidden in a binary file (dynamic-link library [DLL]).
  • You can extend and customize virtually every aspect of ArcGIS technology, including implementing multiple interfaces in a single customization.
  • Since your solution requires registration on the end user's machine, it can depend on external dependencies—libraries, assemblies, services—which themselves require registration or administrative intervention.
Before building a custom component, verify that another type of customization or application, such as a Python script or an add-in, will not meet your needs. Before you proceed with this topic and extend ArcObjects, see Developing with ArcGIS to be sure you are creating the best type of customization for your project requirements.

Types of extensions

ArcGIS has many extension points that you can plug in to. This section focuses on those most commonly extended.

Application framework customizations

You can create custom commands, tools, toolbars, menus, property pages, dockable windows, tool palettes, combo boxes, and application extensions to extend ArcGIS applications. For more information, see Application framework customizations.
Most developers will create add-ins if creating a command, tool, combo box, menu or context menu, multi-item, toolbar, tool palette, dockable window, or application extension. However, if multiple interfaces need to be inherited, or if registration is required, an add-in will not work and a custom component needs to be created. For more information, see Building add-ins for ArcGIS for Desktop.

Custom ArcMap TOC views

The table of contents (TOC) window in ArcMap provides a graphic interface that allows users to interact with the layers in a map. You can create custom TOC views if your customizations are going to interact directly with the layers in the map. For more information, see Creating custom ArcMap TOC views.
Dockable windows should be created if a command requires a dockable window. A custom TOC view should only be used if the customization is interacting directly with the map layers, not as an alternate for a dockable window.

Mapping and visualization customizations

The map and data display can also be customized by creating custom elements, custom symbols, custom renderers, and custom layers. To combine graphics and text or draw an unsupported geometry, create a custom element. To customize the symbols used on your map, create a custom symbol. To control the way features are drawn, you can implement a custom renderer. A custom layer will let you change how an existing layer class draws, or to display an unsupported data source in a map. For more information, see Mapping and visualization customizations.

Geodatabase customizations

You can also customize how the geodatabase works. Creating a custom geodatabase extension allows you to implement custom behavior across all clients accessing a geodatabase. A new data format can be integrated into ArcGIS as read-only by developing a plug-in data source. For more information, see Geodatabase customizations.

Editor framework customizations

The editor framework can be extended with custom commands, tools, tasks, extensions, shape constructors, and object inspectors. These customizations allow you to provide your behavior to the user during their editing workflows. For more information, see Editor framework customizations.
Most developers will create add-ins for their editor command, tool, and extension customizations. For more information, see Customizing the editor framework using add-ins.

Custom geoprocessing function tools

You can also extend the geoprocessing framework by building geoprocessing tools. A geoprocessing tool can be thought of as an operation that takes an input or set of inputs and generates one or more outputs. These tools can then be used through ArcToolbox or ModelBuilder, as well as being available for use in your custom applications. For more information, see Custom geoprocessing function tools.
If your custom geoprocessing function tool is going to link together a number of existing tools, create a Python script instead.


See Also:

Application framework customizations
Creating custom ArcMap TOC views
Mapping and visualization customizations
Geodatabase customizations
Editor framework customizations
Custom geoprocessing function tools
ESRIRegAsm utility
How to register COM components
Registering classes in COM component categories
How to register custom components for multiple products
Deploying custom components