init
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
---
|
||||
source_files:
|
||||
- DTS Viewer/DTS.Viewer.Reports/DTS.Viewer.PSDReportSettings/PSDReportSettingsModule.cs
|
||||
generated_at: "2026-04-16T13:37:20.992121+00:00"
|
||||
model: "zai-org/GLM-5-FP8"
|
||||
schema_version: 1
|
||||
sha256: "272bb780c04413d3"
|
||||
---
|
||||
|
||||
# Documentation: PSDReportSettingsModule
|
||||
|
||||
## 1. Purpose
|
||||
This module serves as the entry point for the "PSD Report Settings" feature within the DTS Viewer application. It is a Prism Module (`PSDReportSettingsModule`) responsible for registering its specific View, ViewModel, and Model implementations with the Unity dependency injection container. Additionally, it defines assembly-level attributes to expose metadata (name, image, group, and region) to the main application shell, enabling the module to be discovered and displayed as an available component.
|
||||
|
||||
## 2. Public Interface
|
||||
|
||||
### Class: `PSDReportSettingsModule`
|
||||
Implements `Prism.Modularity.IModule`.
|
||||
|
||||
* **Constructor**: `PSDReportSettingsModule(IUnityContainer unityContainer)`
|
||||
* Accepts an `IUnityContainer` instance via constructor injection and stores it in a readonly field.
|
||||
* **Method**: `void Initialize()`
|
||||
* Registers three type mappings in the Unity container:
|
||||
* `IPSDReportSettingsViewModel` mapped to `PSDReportSettingsViewModel`.
|
||||
* `IPSDReportSettingsModel` mapped to `PSDReportSettingsModel`.
|
||||
* `IPSDReportSettingsView` mapped to `PSDReportSettingsView`.
|
||||
* **Method**: `void RegisterTypes(IContainerRegistry containerRegistry)`
|
||||
* Implements `IModule.RegisterTypes`. It invokes the `Initialize()` method.
|
||||
* **Method**: `void OnInitialized(IContainerProvider containerProvider)`
|
||||
* Implements `IModule.OnInitialized`. This method is currently empty.
|
||||
|
||||
### Class: `PSDReportSettingsModuleNameAttribute`
|
||||
Inherits from `TextAttribute`.
|
||||
|
||||
* **Constructor**: `PSDReportSettingsModuleNameAttribute()` / `PSDReportSettingsModuleNameAttribute(string s)`
|
||||
* Hardcodes the `AssemblyName` property to `AssemblyNames.PSDReportSettings.ToString()`. The string argument `s` in the overloaded constructor is ignored.
|
||||
* **Property**: `string AssemblyName { get; }`
|
||||
* Returns the hardcoded assembly name string.
|
||||
* **Method**: `Type GetAttributeType()`
|
||||
* Returns `typeof(TextAttribute)`.
|
||||
* **Method**: `string GetAssemblyName()`
|
||||
* Returns the value of the `AssemblyName` property.
|
||||
|
||||
### Class: `PSDReportSettingsModuleImageAttribute`
|
||||
Inherits from `ImageAttribute`.
|
||||
|
||||
* **Constructor**: `PSDReportSettingsModuleImageAttribute()` / `PSDReportSettingsModuleImageAttribute(string s)`
|
||||
* Initializes a private `BitmapImage` field (`_img`) by calling `AssemblyInfo.GetImage`. The string argument `s` is ignored.
|
||||
* **Property**: `BitmapImage AssemblyImage { get; }`
|
||||
* Gets the image by calling `AssemblyInfo.GetImage` with the `AssemblyNames.PSDReportSettings` enum value.
|
||||
* **Property**: `string AssemblyName { get; }`
|
||||
* Returns `AssemblyNames.PSDReportSettings.ToString()`.
|
||||
* **Property**: `string AssemblyGroup { get; }`
|
||||
* Returns `eAssemblyGroups.Viewer.ToString()`.
|
||||
* **Property**: `eAssemblyRegion AssemblyRegion { get; }`
|
||||
* Returns `eAssemblyRegion.PSDReportSettingsRegion`.
|
||||
* **Methods**:
|
||||
* `Type GetAttributeType()`: Returns `typeof(ImageAttribute)`.
|
||||
* `BitmapImage GetAssemblyImage()`: Returns `AssemblyImage`.
|
||||
* `string GetAssemblyName()`: Returns `AssemblyName`.
|
||||
* `string GetAssemblyGroup()`: Returns `AssemblyGroup`.
|
||||
* `eAssemblyRegion GetAssemblyRegion()`: Returns `AssemblyRegion`.
|
||||
|
||||
## 3. Invariants
|
||||
* **Module Name**: The Prism module is identified by the string `"PSDReportSettings"` via the `[Module]` attribute.
|
||||
* **Assembly Attributes**: The assembly is decorated with both `PSDReportSettingsModuleNameAttribute` and `PSDReportSettingsModuleImageAttribute` with `AllowMultiple = false`.
|
||||
* **Registration Mapping**: The `Initialize` method guarantees that `IPSDReportSettingsViewModel`, `IPSDReportSettingsModel`, and `IPSDReportSettingsView` are registered with the container upon module initialization.
|
||||
* **Region Assignment**: This module is statically bound to the region `eAssemblyRegion.PSDReportSettingsRegion`.
|
||||
|
||||
## 4. Dependencies
|
||||
|
||||
### Internal Dependencies
|
||||
* **DTS.Common**: Referenced for `AssemblyNames`, `AssemblyInfo`, `eAssemblyGroups`, and `eAssemblyRegion`.
|
||||
* **DTS.Common.Interface**: Referenced for base classes `TextAttribute` and `ImageAttribute`.
|
||||
* **Local Types**: The module depends on the existence of `PSDReportSettingsViewModel`, `PSDReportSettingsModel`, and `PSDReportSettingsView` (and their corresponding interfaces), though these types are not defined in the provided source snippet.
|
||||
|
||||
### External Dependencies
|
||||
* **Prism.Ioc**: For `IContainerProvider` and `IContainerRegistry`.
|
||||
* **Prism.Modularity**: For `IModule` and `ModuleAttribute`.
|
||||
* **Unity**: For `IUnityContainer` (used for specific registration logic).
|
||||
* **System.Windows.Media.Imaging**: For `BitmapImage`.
|
||||
|
||||
### Consumers
|
||||
* The DTS Viewer main application shell (inferred from the module structure and `eAssemblyGroups.Viewer` group assignment).
|
||||
|
||||
## 5. Gotchas
|
||||
* **Mixed Container Abstractions**: The module implements `IModule`, which provides a `RegisterTypes(IContainerRegistry containerRegistry)` method intended for container-agnostic registration. However, the implementation ignores the `containerRegistry` argument and instead uses the injected `IUnityContainer` instance via the `Initialize()` method. This ties the module specifically to Unity, bypassing Prism's container abstraction layer.
|
||||
* **Redundant Constructor Arguments**: Both attribute classes possess constructors accepting a `string s` argument. This argument is unused in both constructors, suggesting legacy code or a requirement of the base attribute constructor signature that was implemented but not utilized.
|
||||
* **Property Side Effects**: In `PSDReportSettingsModuleImageAttribute`, the getter for `AssemblyImage` re-executes `AssemblyInfo.GetImage(...)` and reassigns the private field `_img` every time it is accessed, rather than returning the cached value.
|
||||
* **Empty OnInitialized**: The `OnInitialized` method is explicitly empty. If the View needs to be loaded into a region automatically upon startup, that logic is absent from this module class.
|
||||
Reference in New Issue
Block a user