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
Example: Basic Member Delegation