--- source_files: - DTS Viewer/DTS.Viewer.Reports/DTS.Viewer.PSDReport/PSDReportModule.cs - DTS Viewer/DTS.Viewer.Reports/DTS.Viewer.PSDReport/PSDReportSession.cs - DTS Viewer/DTS.Viewer.Reports/DTS.Viewer.PSDReport/Bootstrapper.cs generated_at: "2026-04-17T15:54:21.888764+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "f2871164a32bda62" --- # PSDReport Module Documentation ## 1. Purpose The `DTS.Viewer.PSDReport` module is a Prism-based modular component within the DTS Viewer system responsible for providing PSD (Power Spectral Density) report visualization functionality. It implements the `IModule` interface for Prism modularity, manages its own bootstrapping lifecycle for both standalone and integrated modes, and integrates with the plugin architecture to discover and load additional modules dynamically. The module registers its views and view models with the Unity container and participates in the region-based UI composition system. --- ## 2. Public Interface ### PSDReportModule (PSDReportModule.cs) **Class Declaration:** ```csharp [Module(ModuleName = "PSDReport")] public class PSDReportModule : IPSDReportModule ``` **Properties:** - `SessionStarted` (bool, read-only) - Indicates whether a session has been started via `StartSession()`. **Constructor:** ```csharp public PSDReportModule(IUnityContainer unityContainer) ``` Accepts an injected `IUnityContainer` instance. **Methods:** ```csharp public void Initialize() ``` Registers `IPSDReportModule` to `PSDReportModule` with `ContainerControlledLifetimeManager` (singleton lifetime). ```csharp public void StartSession() ``` Resolves `IEventAggregator`, publishes a `LoadViewModulEvent` with a new `LoadViewModulArg`, and sets `SessionStarted` to `true`. ```csharp public void RegisterTypes(IContainerRegistry containerRegistry) ``` Calls `Initialize()`. ```csharp public void OnInitialized(IContainerProvider containerProvider) ``` Empty implementation (no initialization logic executed). --- ### PSDReportModuleNameAttribute (PSDReportModule.cs) **Class Declaration:** ```csharp [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false)] public class PSDReportModuleNameAttribute : TextAttribute ``` **Properties:** - `AssemblyName` (string, read-only) - Returns `AssemblyNames.PSDReport.ToString()`. **Methods:** ```csharp public override Type GetAttributeType() // Returns typeof(TextAttribute) public override string GetAssemblyName() // Returns AssemblyName ``` --- ### PSDReportModuleImageAttribute (PSDReportModule.cs) **Class Declaration:** ```csharp [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false)] public class PSDReportModuleImageAttribute : ImageAttribute ``` **Properties:** - `AssemblyImage` (BitmapImage, read-only) - Returns image loaded via `AssemblyInfo.GetImage(AssemblyNames.PSDReport.ToString())`. - `AssemblyName` (string, read-only) - Returns `AssemblyNames.PSDReport.ToString()`. - `AssemblyGroup` (string, read-only) - Returns `eAssemblyGroups.Viewer.ToString()`. - `AssemblyRegion` (eAssemblyRegion, read-only) - Returns `eAssemblyRegion.PSDReportRegion`. **Methods:** ```csharp public override Type GetAttributeType() // Returns typeof(ImageAttribute) public override BitmapImage GetAssemblyImage() // Returns AssemblyImage public override string GetAssemblyName() // Returns AssemblyName public override string GetAssemblyGroup() // Returns AssemblyGroup public override eAssemblyRegion GetAssemblyRegion() // Returns AssemblyRegion ``` --- ### PSDReportSession (PSDReportSession.cs) **Class Declaration:** ```csharp public class PSDReportSession ``` **Properties:** - `Container` (IUnityContainer, read-only) - Set after `CreateSession()` is called. - `_serviceLocator` (IServiceLocator, read-only) - Set after `CreateSession()` is called. - `_eventAggregator` (IEventAggregator, read-only) - Set after `CreateSession()` is called. - `_regionManager` (IRegionManager, read-only) - Set after `CreateSession()` is called. - `CustomConfigPath` (string, read/write) - Path to custom configuration file. **Methods:** ```csharp public void CreateSession(bool standalone, string customConfigPath = "") ``` Creates the bootstrapper, resolves core services (`IEventAggregator`, `IServiceLocator`, `IRegionManager`), loads plugins via `PluginManager`, and publishes the plugin list via `AssemblyListNotificationViewer` event. ```csharp public void Terminate() ``` Empty implementation. Intended for shutdown cleanup per IComponent implementation. --- ### Bootstrapper (Bootstrapper.cs) **Class Declaration:** ```csharp public class Bootstrapper : UnityBootstrapper ``` **Properties:** - `Standalone` (bool, read/write) - Indicates whether the application runs in standalone mode. - `CustomConfigPath` (string, read/write) - Path to custom