Derived Member Requirements

Meta Data Services Programming

Meta Data Services Programming

Derived Member Requirements

Before you define a derived member, verify that conditions supporting the implementation are in place.

General Requirements

The following requirements apply to all derived members.

  • A class that supports an interface with a derived member must also support the interface on which the corresponding base member is defined. In other words, the interface with the derived member must either inherit or imply the interface with the base member.

  • A derived member can be on the same or a different interface as its base member.

  • A derived member can be derived from another derived member. An interface member must ultimately derive from a member that is not derived. In other words, cyclic derivations are not allowed.

  • Derived members can be defined for any interface that is an instance of InterfaceDef, including built-in repository engine interfaces, such as IRepositoryObject.
Derived Property Definition Requirements

For property definitions, storage data types and lengths of derived properties must be the same as those of the base property.

Derived Collection Definition Requirements

Because a derived collection must map to a base collection, the derived collection and base collection must have correspondent characteristics.

The following requirements apply to derived collections.

Collection Type

A derived origin collection must map to a base origin collection, and a derived destination collection must map to a base destination collection.

Relationship Type

A derived collection can be connected by way of a relationship only to another derived collection. However, a derived collection cannot be connected to a base (stored) collection.

A derived collection definition must be defined in the same transaction as the collection from which it was derived, on the same relationship.

Two derived relationships can specialize the same base relationship and have their collections on the same pair of interfaces. However, because only the generalized relationship is stored in the relationship table (RTblRelships), instances of the two specialized relationships are indistinguishable.

Naming

A derived collection must be identical to the base collection with regard to naming characteristics. If the base collection specifies unique naming, the derived collection must also contain uniquely named items. Furthermore, if you add items to a base collection by way of the derived collection, you must verify that the items you add do not break the unique naming constraints of the base collection. For more information, see Naming and Unique-Naming Collections.

Sequencing

A derived collection must be identical to the base collection with regard to sequencing characteristics. Inserting an item into a derived sequenced collection inserts the new relationship into the base collection immediately after its predecessor in the derived collection. Also, moving an item in the derived collection moves the item in the base collection immediately after its predecessor in the derived collection. For more information, see Sequenced Collections.

Delete Propagation

The delete propagation semantics of a derived collection must be the same as the base collection. For more information, see Propagating Deletes.

Version Propagation

The version propagation semantics of a derived collection must be the same as the base collection. For more information, see Propagating Versions.

See Also

Creating a Derived Member

Defining Inheritance

Example: Basic Member Delegation

Example: Member Delegation with Filtering

IInterfaceMember2 interface

InterfaceMemberFlags Enumeration