Files
DP44/enriched-qwen3-coder-next/DTS Viewer/DTS.Viewer.Modules/DTS.Viewer.TestSummaryList.md
2026-04-17 14:55:32 -04:00

5.3 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
DTS Viewer/DTS.Viewer.Modules/DTS.Viewer.TestSummaryList/TestSummaryListModule.cs
2026-04-16T13:44:28.584729+00:00 zai-org/GLM-5-FP8 1 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).