About custom features


In geodatabases, a custom feature is a feature with additional specialized behavior implemented by the developer. When implementing a custom feature, you inherit a standard geodatabase feature. You can then choose to implement new interfaces or override some of the existing standard interfaces.
In this section the term custom feature is used to generically cover spatial and nonspatial objects. The more correct generic term custom object is too easily confused with custom COM objects that extend or customize some other part of ArcObjects.
Custom features are one of the most advanced geodatabase customizations possible. When deployed, there is really no difference between a standard geodatabase feature and a developer-supplied custom feature—the ArcGIS framework treats them in exactly the same way. In fact, many of the geodatabase features were implemented internally as custom features, for example, annotation features and dimension features. Clearly, the custom feature mechanism offers a massive capability to extend the geodatabase model. However, with this power comes responsibility to achieve a robust and efficient implementation, so that ArcGIS will work correctly.
Custom features are one of the most advanced geodatabase customizations possible. In the vast majority of cases you will not find it necessary to develop custom features.
In the vast majority of cases, you will not find it necessary to develop custom features. As you will see, they can only be implemented in development environments that support COM aggregation; you can develop custom features in Visual C++, but not in Visual Basic 6. ESRI has provided facilities so that nearly all geodatabase customizations can be implemented in class extensions rather than custom features. There is also the alternative of satisfying behavior requirements by customizing the application, for example, with a tool or an editor extension.
Later in this section, the reasons why you should or shouldn't implement a custom feature will be discussed in detail. First, a simple example is presented of a custom Tree feature.


See Also:

TreeFeature custom feature example
Custom features versus other solutions
Making a class extension with your custom feature
Managing custom features