109 lines
7.2 KiB
Markdown
109 lines
7.2 KiB
Markdown
---
|
|
source_files:
|
|
- DTS Viewer/DTS.Viewer.Modules/DTS.Viewer.TestSummaryList/TestSummaryListModule.cs
|
|
generated_at: "2026-04-16T11:06:42.997864+00:00"
|
|
model: "zai-org/GLM-5-FP8"
|
|
schema_version: 1
|
|
sha256: "b68514768022da67"
|
|
---
|
|
|
|
# Documentation: TestSummaryListModule.cs
|
|
|
|
## 1. Purpose
|
|
|
|
This module serves as a Prism-based module initializer for the Test Summary List feature within the DTS Viewer application. Its primary role is to register the view (`TestSummaryListView`) and view model (`TestSummaryViewListModel`) with the Unity dependency injection container, enabling the main application to discover and load this component. Additionally, it provides assembly-level metadata attributes that define the module's name, display image, region assignment, and group classification for use by the main shell's module management system.
|
|
|
|
---
|
|
|
|
## 2. Public Interface
|
|
|
|
### `TestSummaryListModule` (Class)
|
|
**Signature:** `public class TestSummaryListModule : IModule`
|
|
|
|
A Prism module that handles registration of the Test Summary List view and view model.
|
|
|
|
| Member | Signature | Description |
|
|
|--------|-----------|-------------|
|
|
| Constructor | `TestSummaryListModule(IUnityContainer unityContainer)` | Accepts an injected `IUnityContainer` instance and stores it in `_unityContainer`. |
|
|
| `Initialize` | `public void Initialize()` | Registers `ITestSummaryListView` → `TestSummaryListView` and `ITestSummaryListViewModel` → `TestSummaryViewListModel` with Unity. |
|
|
| `OnInitialized` | `public void OnInitialized(IContainerProvider containerProvider)` | Empty implementation (no-op). |
|
|
| `RegisterTypes` | `public void RegisterTypes(IContainerRegistry containerRegistry)` | Calls `Initialize()` to perform type registrations. |
|
|
|
|
---
|
|
|
|
### `TestSummaryListModuleNameAttribute` (Class)
|
|
**Signature:** `public class TestSummaryListModuleNameAttribute : TextAttribute`
|
|
|
|
Assembly-level attribute providing the module's name metadata.
|
|
|
|
| Member | Signature | Description |
|
|
|--------|-----------|-------------|
|
|
| Constructor | `TestSummaryListModuleNameAttribute()` | Default constructor; sets `AssemblyName` to `AssemblyNames.TestSummaryList.ToString()`. |
|
|
| Constructor | `TestSummaryListModuleNameAttribute(string s)` | Overload accepting a string parameter (unused). |
|
|
| `AssemblyName` | `public override string AssemblyName { get; }` | Returns `AssemblyNames.TestSummaryList.ToString()`. |
|
|
| `GetAttributeType` | `public override Type GetAttributeType()` | Returns `typeof(TextAttribute)`. |
|
|
| `GetAssemblyName` | `public override string GetAssemblyName()` | Returns the `AssemblyName` property value. |
|
|
|
|
---
|
|
|
|
### `TestSummaryListModuleImageAttribute` (Class)
|
|
**Signature:** `public class TestSummaryListModuleImageAttribute : ImageAttribute`
|
|
|
|
Assembly-level attribute providing the module's image, name, group, and region metadata for display in the main application shell.
|
|
|
|
| Member | Signature | Description |
|
|
|--------|-----------|-------------|
|
|
| Constructor | `TestSummaryListModuleImageAttribute()` | Default constructor; initializes `_img` via `AssemblyInfo.GetImage()`. |
|
|
| Constructor | `TestSummaryListModuleImageAttribute(string s)` | Overload accepting a string parameter (unused). |
|
|
| `AssemblyImage` | `public override BitmapImage AssemblyImage { get; }` | Lazy-loads and returns image via `AssemblyInfo.GetImage(AssemblyNames.TestSummaryList.ToString())`. |
|
|
| `AssemblyName` | `public override string AssemblyName { get; }` | Returns `AssemblyNames.TestSummaryList.ToString()`. |
|
|
| `AssemblyGroup` | `public override string AssemblyGroup { get; }` | Returns `eAssemblyGroups.Viewer.ToString()`. |
|
|
| `AssemblyRegion` | `public override eAssemblyRegion AssemblyRegion { get; }` | Returns `eAssemblyRegion.TestSummaryRegion`. |
|
|
| `GetAssemblyImage` | `public override BitmapImage GetAssemblyImage()` | Returns `AssemblyImage`. |
|
|
| `GetAssemblyName` | `public override string GetAssemblyName()` | Returns `AssemblyName`. |
|
|
| `GetAssemblyGroup` | `public override string GetAssemblyGroup()` | Returns `AssemblyGroup`. |
|
|
| `GetAssemblyRegion` | `public override eAssemblyRegion GetAssemblyRegion()` | Returns `AssemblyRegion`. |
|
|
| `GetAttributeType` | `public override Type GetAttributeType()` | Returns `typeof(ImageAttribute)`. |
|
|
|
|
---
|
|
|
|
## 3. Invariants
|
|
|
|
- **Module Name Consistency:** The `Module` attribute's `ModuleName` property is hardcoded as `"TestSummaryList"` and must match the `AssemblyNames.TestSummaryList` enum value's string representation.
|
|
- **Single Instance per Assembly:** Both assembly attributes use `AllowMultiple = false`, ensuring only one name and one image attribute can be applied per assembly.
|
|
- **Region Assignment:** The module is always assigned to `eAssemblyRegion.TestSummaryRegion`.
|
|
- **Group Assignment:** The module is always assigned to `eAssemblyGroups.Viewer`.
|
|
- **Attribute Target:** Both attributes are restricted to `AttributeTargets.Assembly` only.
|
|
|
|
---
|
|
|
|
## 4. Dependencies
|
|
|
|
### This Module Depends On:
|
|
| Dependency | Usage |
|
|
|------------|-------|
|
|
| `Prism.Ioc` | `IContainerProvider` interface for `OnInitialized` |
|
|
| `Prism.Modularity` | `IModule` interface and `Module` attribute |
|
|
| `Unity` | `IUnityContainer` for DI registration |
|
|
| `System.Windows.Media.Imaging` | `BitmapImage` for module icon |
|
|
| `DTS.Common` | `AssemblyNames` enum, `eAssemblyGroups` enum, `eAssemblyRegion` enum, `AssemblyInfo` static class |
|
|
| `DTS.Common.Interface` | `TextAttribute`, `ImageAttribute` base classes |
|
|
| `DTS.Viewer.TestSummaryList.ViewModel` | `ITestSummaryListViewModel`, `TestSummaryViewListModel` |
|
|
| Local (same assembly) | `ITestSummaryListView`, `TestSummaryListView` |
|
|
|
|
### What Depends On This Module:
|
|
- The main DTS Viewer shell application (inferred from Prism modularity pattern and assembly-level metadata attributes used for module discovery)
|
|
|
|
---
|
|
|
|
## 5. Gotchas
|
|
|
|
1. **Misleading Singleton Comment:** The comment on line 35 states "Register View & View-Model with Unity dependency injection container as a singleton," but `RegisterType<TFrom, TTo>()` registers types as **transient** by default in Unity, not as singletons. To register as singletons, `RegisterType<TFrom, TTo>(new ContainerControlledLifetimeManager())` or `RegisterSingleton<TFrom, TTo>()` should be used. The actual behavior may not match the comment's intent.
|
|
|
|
2. **Unusual View Model Class Name:** The concrete view model class is named `TestSummaryViewListModel` (line 39), which appears to be a typo or unconventional naming—typically one would expect `TestSummaryViewModel`. This is the actual class name in the source, not a documentation error.
|
|
|
|
3. **Redundant `Initialize()` Method:** The `Initialize()` method is public and called from `RegisterTypes()`, but it could be inlined. Having it public allows external code to call it, which could cause duplicate registrations.
|
|
|
|
4. **Unused Constructor Parameters:** Both attribute constructors accept a `string s` parameter that is never used in the constructor body. This appears to be boilerplate code required by the .NET attribute system for XAML or reflection usage.
|
|
|
|
5. **Lazy Initialization Side Effect:** The `AssemblyImage` property getter has a side effect—it assigns to `_img` on every get. While the constructor also initializes `_img`, the property getter will re-fetch the image each time, potentially causing unnecessary work if called repeatedly. |