Files
2026-04-17 14:55:32 -04:00

6.0 KiB
Raw Permalink Blame History

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
DataPRO/Modules/SystemSettings/QASettings/QASettingsModule.cs
2026-04-16T04:39:47.144121+00:00 Qwen/Qwen3-Coder-Next-FP8 1 c77c52ad81731c25

QASettings

Purpose

The QASettingsModule is a Prism module responsible for bootstrapping and registering the QA Settings feature within the applications modular architecture. It integrates with Unity as the dependency injection container to register the view (IQASettingsView) and view model (IQASettingsViewModel) as singleton services, enabling their later resolution and composition into the UI. Additionally, it exposes metadata about the module (e.g., display name, group, and icon) via the QASettingsImageAttribute, which is applied at the assembly level and consumed by the main UI to render the module in component selection interfaces.


Public Interface

Class: QASettingsModule

  • QASettingsModule(IUnityContainer unityContainer)
    Constructor. Accepts a Unity container via dependency injection and stores it for later use in type registration.

  • void Initialize()
    Registers the view and view model types as singletons in the Unity container:

    • IQASettingsViewQASettingsView
    • IQASettingsViewModelQASettingsViewModel
  • void OnInitialized(IContainerProvider containerProvider)
    Currently empty; no initialization logic executed during Prisms module initialization lifecycle.

  • void RegisterTypes(IContainerRegistry containerRegistry)
    Delegates to Initialize(), performing the same type registrations. This method is part of Prisms IModule interface contract and is invoked by the Prism framework during module loading.

Class: QASettingsImageAttribute

(Inherits from ImageAttribute — assumed defined elsewhere in DTS.Common)

  • QASettingsImageAttribute()
    Default constructor; delegates to the parameterized constructor with null.

  • QASettingsImageAttribute(string s)
    Constructor accepting an unused string parameter; initializes _img by calling AssemblyInfo.GetImage(AssemblyNames.QASettings.ToString()).

  • override eAssemblyRegion AssemblyRegion
    Property getter throws NotImplementedException.

  • override BitmapImage AssemblyImage
    Returns a BitmapImage obtained by calling AssemblyInfo.GetImage("QASettings"). Caches the result in _img on first access.

  • override Type GetAttributeType()
    Returns typeof(ImageAttribute).

  • override BitmapImage GetAssemblyImage()
    Returns the value of AssemblyImage.

  • override string AssemblyName
    Property getter returns "QASettings" (via AssemblyNames.QASettings.ToString()). Caches in _name.

  • override string GetAssemblyName()
    Returns the value of AssemblyName.

  • override eAssemblyRegion GetAssemblyRegion()
    Throws NotImplementedException.

  • override string AssemblyGroup
    Property getter returns "Administrative" (via eAssemblyGroups.Administrative.ToString()). Caches in _group.

  • override string GetAssemblyGroup()
    Returns the value of AssemblyGroup.

Note

: All NotImplementedException-throwing members (AssemblyRegion, GetAssemblyRegion, GetAssemblyRegion) are present but unimplemented. Their behavior is undefined at runtime.


Invariants

  • The QASettingsModule must be loaded by the Prism module catalog for the view/view model registrations to take effect.
  • AssemblyInfo.GetImage(AssemblyNames.QASettings.ToString()) must succeed during QASettingsImageAttribute construction; otherwise, a runtime exception occurs (e.g., NullReferenceException if AssemblyInfo.GetImage returns null).
  • AssemblyNames.QASettings and eAssemblyGroups.Administrative must be defined in referenced assemblies (DTS.Common); otherwise, compilation fails.
  • QASettingsView and QASettingsViewModel must implement IQASettingsView and IQASettingsViewModel respectively, and be resolvable via Unity.
  • The QASettingsImageAttribute is applied once per assembly (due to AllowMultiple = false).

Dependencies

Module Dependencies

  • DTS.Common
    Provides:
    • AssemblyInfo, AssemblyNames, eAssemblyGroups
    • Base ImageAttribute class
    • IQASettingsView, IQASettingsViewModel interfaces
  • Prism.Modularity
    Provides IModule interface.
  • Prism.Ioc
    Provides IContainerRegistry, IContainerProvider.
  • Unity
    Provides IUnityContainer.
  • System.Windows.Media.Imaging
    Provides BitmapImage.

Module Consumers

  • The Prism bootstrapper/module catalog (implicit consumer).
  • UI components that resolve IQASettingsView or IQASettingsViewModel via Unity.
  • The main application shell (e.g., ShellView) likely uses QASettingsImageAttribute metadata to display the module in a component selector.

Gotchas

  • AssemblyRegion and GetAssemblyRegion() throw NotImplementedException: Any code attempting to access these members (e.g., UI rendering logic) will crash at runtime. This suggests incomplete implementation or legacy code.
  • Unused string parameter in QASettingsImageAttribute(string s): The parameter is accepted but never used; likely a remnant of refactoring or base-class requirements.
  • Caching in AssemblyImage and AssemblyName: While _img, _name, and _group are cached, the properties are not thread-safe. Concurrent access during initialization could lead to race conditions (though unlikely given typical single-threaded Prism module loading).
  • No validation in Initialize(): Assumes IQASettingsView and IQASettingsViewModel are resolvable by Unity. If their dependencies are unregistered, resolution will fail at runtime (not compile time).
  • No OnInitialized logic: The empty OnInitialized method may indicate pending functionality or unused Prism lifecycle hooks.

None identified beyond the above.