About extending and replacing IDOs

This application allows for the creation of new IDOs (Intelligent Data Objects) that inherit all the properties, methods, tables, and extension classes from an existing IDO. The relationship between the newly created IDO and the original (base) IDO is called an "extended" relationship: The new IDO inherits these elements from the base IDO and adds to them.

You can optionally mark an extended IDO to be used as a replacement for the base IDO. When an extended IDO replaces its base IDO, the application reroutes all IDO requests that are targeted for the base IDO to the extended IDO instead. The requests affected by this rule include GetPropertyInfo, LoadCollection, UpdateCollection, and Invoke requests.

Use the IDO Wizard to extend or extend-and-replace an IDO. This wizard, which is accessible from the IDOs form, includes the Extends option and the Extend and Replace option. See Adding an IDO.

An extended IDO can only make additive changes to the base IDO. That is, new properties, methods, tables, or extension classes can be added, but none of the base properties, methods, tables, or extension classes can be modified or deleted. New properties can be bound to columns from tables in the extended IDO or in the base IDO. Likewise, new "derived properties" can reference properties in the extended IDO, as well as properties in the base IDO.

An extended IDO can itself be extended by one or more other IDOs. There is no hard limit to the number of levels in an inheritance chain. While any number of extended IDOs can share the same base IDO, no more than one sibling IDO can be used as a replacement for the base IDO.

When the IDO Runtime Service processes IDO requests, it generates events that might be handled by IDO extension classes. If an extended IDO has one or more base IDOs that have extension classes associated with them, the events fire in all extension classes, but the order in which they fire is indeterminate.

The base IDO and the Extend and Replace option can only be set when creating a new IDO. The attributes are read-only for existing IDOs.