init
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user