Derivation Behavior

Meta Data Services Programming

Meta Data Services Programming

Derivation Behavior

The following are detailed rules for derivations that apply to storage, retrievals, updating collections, and adding derived members to an existing class.

Storage

A property or relationship is always stored by the repository engine on the base interface. That is, there are no instances of derived relationships in RTblRelships and there are no columns allocated for derived properties in the repository SQL table of their interface.

Retrievals

When a derived collection is referenced, the repository engine materializes the derived collection by applying a filter to the base collection. For each instance in the base collection, the engine determines whether the target object supports the target interface of the derived collection. The effect for a relationship collection is that all instances are visible at the general level in the base collection, and subsets of the generalized relationship instance collection are visible at the more specialized levels in the derived collections.

Updates to Collections

Use IInterfaceMember::Flags to determine whether a derived or base member is updateable.

Add, remove, insert, and move methods on the derived collection are delegated to the corresponding operation on the corresponding item in the base collection. An insert or move method on a sequenced collection places the item relative to the derived collection. For more information about sequencing, see Derived Member Requirements.

The count, enumeration, and type methods on a derived collection are specific to that collection.

See Also

Creating a Derived Member

Defining Inheritance

Example: Basic Member Delegation

Example: Member Delegation with Filtering

IInterfaceMember2 interface

InterfaceMemberFlags Enumeration