The Metro component model separates the specification of strong and weak aggregation relationships of a component using two pattern-based interfaces. A Context interface is used by a component to declare dependencies wheras the internal structure of a component may be declared under a Parts interface. In addition Metro supports the recognition of logging channel parameter types .
The following table lists the primary constructor parameter types:
logging | a logging channel supplied to the component by the container using a category name corresponding to the fully qualified path of the component |
context | dependent services and resources managed by the container where the relationship between the supplied service and resource and the consumer component is one of weak aggregation (destruction of the component does not imply destruction of the services and resources it is consuming) |
parts | a collection of components managed by the enclosing component where the relationship between the enclosing component and enclosed components is one of strong aggregation (destruction of the enclosing component implies distruction of all enclosed components) |
If a constructor parameter type is not resolved relative to the above aspects, the Metro will attempt to resolve a service assignable to the parameter type taking into account the services published by peer components relative to the enclosing component.