When the Repository Add-in for Visual Basic creates the MDO Model in your repository, it adds the Contents collection to the Root Repository Object. This enables you to enumerate all of the Visual Basic projects that have been stored in the repository.
Within each MdoProject object, the MdoComponents collection contains one object for each component that exists in the project. This collection is a collection of heterogeneous objects; that is, the various controls, forms, modules, and so on are all in the collection. Although the objects in the collection conform to different MDO Model classes, they all also conform to the RepositoryObject class. Thus, they can all be manipulated (at a fundamental level) in a homogeneous manner.
Within each MdoProject object, the MdoReferences collection contains one object for each reference to either an external type library or another Visual Basic project.
Each MdoControl, MdoMDIForm, MdoPropertyPage, MdoUserControl, MdoDocument, and MdoVBForm has an MdoControls collection. The MdoControls collection contains one object for each imbedded control. If there are no imbedded controls, the collection is empty (but it still exists). Since controls can contain other controls, the control-collection-control arrangement recurses until a control is reached that has no imbedded controls.
Some MdoControl objects represent custom controls or controls that have been supplied by an independent software vendor (ISV). For each of these MdoControl objects, the MdoControlUsage collection connects the MdoControl object to its corresponding MdoUserControl object.