72 lines
5.3 KiB
Markdown
72 lines
5.3 KiB
Markdown
|
|
---
|
||
|
|
source_files:
|
||
|
|
- DTS Viewer/DTS.Viewer.Modules/DTS.Viewer.TestSummaryList/TestSummaryListModule.cs
|
||
|
|
generated_at: "2026-04-16T13:44:28.584729+00:00"
|
||
|
|
model: "zai-org/GLM-5-FP8"
|
||
|
|
schema_version: 1
|
||
|
|
sha256: "b68514768022da67"
|
||
|
|
---
|
||
|
|
|
||
|
|
# Documentation: TestSummaryListModule
|
||
|
|
|
||
|
|
## 1. Purpose
|
||
|
|
This module serves as the entry point for the "Test Summary List" component within the DTS Viewer application. It is a Prism module responsible for self-registering its View (`TestSummaryListView`) and ViewModel (`TestSummaryViewListModel`) with the Unity dependency injection container. Additionally, it defines assembly-level metadata attributes to expose the module's name, icon, grouping, and target region to the main application shell.
|
||
|
|
|
||
|
|
## 2. Public Interface
|
||
|
|
|
||
|
|
### Classes
|
||
|
|
|
||
|
|
**`TestSummaryListModule`**
|
||
|
|
Implements `Prism.Modularity.IModule`.
|
||
|
|
* `TestSummaryListModule(IUnityContainer unityContainer)`: Constructor that accepts an `IUnityContainer` instance via dependency injection.
|
||
|
|
* `RegisterTypes(IContainerRegistry containerRegistry)`: Implements the `IModule` interface. It invokes the `Initialize()` method to register the module's types.
|
||
|
|
* `OnInitialized(IContainerProvider containerProvider)`: Implements the `IModule` interface. Currently contains no implementation logic.
|
||
|
|
* `Initialize()`: Registers `ITestSummaryListView` to `TestSummaryListView` and `ITestSummaryListViewModel` to `TestSummaryViewListModel` using the `_unityContainer`.
|
||
|
|
|
||
|
|
**`TestSummaryListModuleNameAttribute`**
|
||
|
|
Inherits from `DTS.Common.Interface.TextAttribute`.
|
||
|
|
* `TestSummaryListModuleNameAttribute()`: Default constructor.
|
||
|
|
* `TestSummaryListModuleNameAttribute(string s)`: Overloaded constructor (parameter `s` is unused).
|
||
|
|
* `AssemblyName` (Property): Returns `AssemblyNames.TestSummaryList.ToString()`.
|
||
|
|
* `GetAttributeType()`: Returns `typeof(TextAttribute)`.
|
||
|
|
* `GetAssemblyName()`: Returns the `AssemblyName` property value.
|
||
|
|
|
||
|
|
**`TestSummaryListModuleImageAttribute`**
|
||
|
|
Inherits from `DTS.Common.Interface.ImageAttribute`.
|
||
|
|
* `TestSummaryListModuleImageAttribute()`: Default constructor.
|
||
|
|
* `TestSummaryListModuleImageAttribute(string s)`: Overloaded constructor (parameter `s` is unused).
|
||
|
|
* `AssemblyImage` (Property): Gets a `BitmapImage` by calling `AssemblyInfo.GetImage` with `AssemblyNames.TestSummaryList.ToString()`.
|
||
|
|
* `AssemblyName` (Property): Returns `AssemblyNames.TestSummaryList.ToString()`.
|
||
|
|
* `AssemblyGroup` (Property): Returns `eAssemblyGroups.Viewer.ToString()`.
|
||
|
|
* `AssemblyRegion` (Property): Returns `eAssemblyRegion.TestSummaryRegion`.
|
||
|
|
* `GetAttributeType()`: Returns `typeof(ImageAttribute)`.
|
||
|
|
* `GetAssemblyImage()`: Returns the `AssemblyImage` property value.
|
||
|
|
* `GetAssemblyName()`: Returns the `AssemblyName` property value.
|
||
|
|
* `GetAssemblyGroup()`: Returns the `AssemblyGroup` property value.
|
||
|
|
* `GetAssemblyRegion()`: Returns the `AssemblyRegion` property value.
|
||
|
|
|
||
|
|
## 3. Invariants
|
||
|
|
* **Module Name:** The module is identified by the string "TestSummaryList" in the `[Module]` attribute.
|
||
|
|
* **Registration Mapping:** The `Initialize` method strictly maps `ITestSummaryListView` to the concrete class `TestSummaryListView` and `ITestSummaryListViewModel` to the concrete class `TestSummaryViewListModel`.
|
||
|
|
* **Assembly Region:** The module is hardcoded to target `eAssemblyRegion.TestSummaryRegion`.
|
||
|
|
* **Assembly Group:** The module is hardcoded to belong to `eAssemblyGroups.Viewer`.
|
||
|
|
|
||
|
|
## 4. Dependencies
|
||
|
|
|
||
|
|
**Internal Dependencies (Inferred from imports and usage):**
|
||
|
|
* `DTS.Common`: Uses `AssemblyNames`, `eAssemblyGroups`, `eAssemblyRegion`, and `AssemblyInfo`.
|
||
|
|
* `DTS.Common.Interface`: Uses `TextAttribute`, `ImageAttribute`.
|
||
|
|
* `DTS.Viewer.TestSummaryList.ViewModel`: Uses `ITestSummaryListViewModel` and `TestSummaryViewListModel`.
|
||
|
|
* `DTS.Viewer.TestSummaryList` (Local Namespace): Uses `TestSummaryListView` and `ITestSummaryListView` (interfaces/views expected to be present in this namespace).
|
||
|
|
|
||
|
|
**External Framework Dependencies:**
|
||
|
|
* `Prism.Ioc`: Uses `IContainerProvider`, `IContainerRegistry`.
|
||
|
|
* `Prism.Modularity`: Uses `IModule`, `ModuleAttribute`.
|
||
|
|
* `Unity`: Uses `IUnityContainer`.
|
||
|
|
* `System.Windows.Media.Imaging`: Uses `BitmapImage`.
|
||
|
|
|
||
|
|
## 5. Gotchas
|
||
|
|
* **Mixed Container Usage:** The `RegisterTypes` method receives an `IContainerRegistry` (Prism abstraction) but ignores it. Instead, it calls `Initialize()`, which uses the injected `IUnityContainer` directly. This bypasses the Prism container abstraction, making the module tightly coupled to Unity rather than being container-agnostic.
|
||
|
|
* **Unused Constructor Parameters:** Both attribute classes (`TestSummaryListModuleNameAttribute` and `TestSummaryListModuleImageAttribute`) have constructors accepting a `string s` that is never used in the logic.
|
||
|
|
* **ViewModel Naming Inconsistency:** The source registers `ITestSummaryListViewModel` to `TestSummaryViewListModel`. The concrete class name appears to be missing an 'e' ("ViewLabel" vs "ViewModel"), which may be a typo or a specific naming convention in the codebase.
|
||
|
|
* **Getter Side Effects:** The `AssemblyImage` property getter in `TestSummaryListModuleImageAttribute` modifies the private field `_img` before returning it. This is a side effect in a getter, which is generally unexpected and could cause issues if the property is accessed frequently or by multiple threads (though `BitmapImage` initialization likely mitigates repeated work, the pattern is non-standard).
|