92 lines
3.1 KiB
Markdown
92 lines
3.1 KiB
Markdown
---
|
|
source_files:
|
|
- Common/DTS.Common/ModuleCatalog/AggregateModuleCatalog.cs
|
|
generated_at: "2026-04-17T16:39:46.691018+00:00"
|
|
model: "zai-org/GLM-5-FP8"
|
|
schema_version: 1
|
|
sha256: "9c34696a3d6323c2"
|
|
---
|
|
|
|
# AggregateModuleCatalog Documentation
|
|
|
|
## 1. Purpose
|
|
|
|
`AggregateModuleCatalog` is an implementation of `IModuleCatalog` that aggregates multiple module catalogs into a single unified interface. It enables composition of module catalogs from different sources (e.g., configuration files, dynamic discovery, explicit registration) while presenting them as a single catalog to the Prism modularity system. This class delegates operations to the underlying catalogs while coordinating results across all of them.
|
|
|
|
## 2. Public Interface
|
|
|
|
### Constructor
|
|
|
|
```csharp
|
|
public AggregateModuleCatalog()
|
|
```
|
|
Initializes a new instance with a default `ModuleCatalog` as the first catalog in the aggregate collection.
|
|
|
|
---
|
|
|
|
### AddCatalog
|
|
|
|
```csharp
|
|
public void AddCatalog(IModuleCatalog catalog)
|
|
```
|
|
Adds a module catalog to the aggregate collection. Throws `ArgumentNullException` if `catalog` is null.
|
|
|
|
---
|
|
|
|
### Modules
|
|
|
|
```csharp
|
|
public IEnumerable<ModuleInfo> Modules { get; }
|
|
```
|
|
Returns all `ModuleInfo` instances across all aggregated catalogs by projecting and flattening each catalog's `Modules` property.
|
|
|
|
---
|
|
|
|
### GetDependentModules
|
|
|
|
```csharp
|
|
public IEnumerable<ModuleInfo> GetDependentModules(ModuleInfo moduleInfo)
|
|
```
|
|
Locates the catalog containing `moduleInfo` and returns its dependencies. Uses `Single()` to find the owning catalog, meaning the module must exist in exactly one catalog or an exception will be thrown.
|
|
|
|
---
|
|
|
|
### CompleteListWithDependencies
|
|
|
|
```csharp
|
|
public IEnumerable<ModuleInfo> CompleteListWithDependencies(IEnumerable<ModuleInfo> modules)
|
|
```
|
|
Returns the complete list of modules including all transitive dependencies. Groups modules by their owning catalog and delegates to each catalog's `CompleteListWithDependencies` method.
|
|
|
|
---
|
|
|
|
### Initialize
|
|
|
|
```csharp
|
|
public void Initialize()
|
|
```
|
|
Iterates through all catalogs and calls `Initialize()` on each one.
|
|
|
|
---
|
|
|
|
### AddModule
|
|
|
|
```csharp
|
|
public void AddModule(ModuleInfo moduleInfo)
|
|
```
|
|
Adds a `ModuleInfo` to the first catalog in the collection (the default `ModuleCatalog` created in the constructor).
|
|
|
|
## 3. Invariants
|
|
|
|
- **Non-empty catalog collection**: The `_catalogs` list always contains at least one catalog after construction (the default `ModuleCatalog` at index 0).
|
|
- **Module uniqueness assumption**: `GetDependentModules` and `CompleteListWithDependencies` assume each `ModuleInfo` exists in exactly one catalog. The use of `Single()` enforces this—if a module is not found or found in multiple catalogs, an exception will be thrown.
|
|
- **Null rejection**: `AddCatalog` will not accept null catalogs and throws `ArgumentNullException`.
|
|
|
|
## 4. Dependencies
|
|
|
|
### This module depends on:
|
|
- `Microsoft.Practices.Prism.Modularity` — Provides `IModuleCatalog`, `ModuleInfo`, and `ModuleCatalog` types from the Prism library.
|
|
- `System`, `System.Collections.Generic`, `System.Linq` — Standard .NET framework types.
|
|
|
|
### What depends on this module:
|
|
- **Unc |