init
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
---
|
||||
source_files:
|
||||
- DataPRO/Modules/SystemSettings/ISOSettings/ISOSettingsModule.cs
|
||||
generated_at: "2026-04-16T04:39:52.161658+00:00"
|
||||
model: "Qwen/Qwen3-Coder-Next-FP8"
|
||||
schema_version: 1
|
||||
sha256: "d9b10982c2687d59"
|
||||
---
|
||||
|
||||
# ISOSettings
|
||||
|
||||
## Documentation: ISOSettingsModule
|
||||
|
||||
### 1. Purpose
|
||||
The `ISOSettingsModule` is a Prism module responsible for bootstrapping and registering the ISO Settings feature within the application’s modular UI architecture. It integrates with the Unity dependency injection container to register the view (`ISOSettingsView`) and view model (`ISOSettingsViewModel`) as singleton services, enabling their later resolution and use in the UI. Additionally, it exposes metadata about the module (e.g., display name, group, and icon) via the `ISOSettingsImageAttribute` assembly-level attribute, allowing the main shell to render the module on the main screen under the *Administrative* group.
|
||||
|
||||
### 2. Public Interface
|
||||
|
||||
#### `ISOSettingsModule` class
|
||||
- **`ISOSettingsModule(IUnityContainer unityContainer)`**
|
||||
Constructor. Accepts a Unity container via dependency injection and stores it for later use in type registration.
|
||||
- **`void Initialize()`**
|
||||
Registers two interfaces to their concrete implementations as singleton types in the Unity container:
|
||||
- `IISOSettingsView` → `ISOSettingsView`
|
||||
- `IISOSettingsViewModel` → `ISOSettingsViewModel`
|
||||
This method is called both directly during module initialization and indirectly via `RegisterTypes`.
|
||||
- **`void OnInitialized(IContainerProvider containerProvider)`**
|
||||
Currently empty. No initialization logic is performed after module registration.
|
||||
- **`void RegisterTypes(IContainerRegistry containerRegistry)`**
|
||||
Delegates to `Initialize()` to perform type registration. Note: Although the method signature uses `IContainerRegistry` (Prism’s abstraction), the implementation uses the injected `IUnityContainer` directly—this may indicate a mismatch or legacy pattern.
|
||||
|
||||
#### `ISOSettingsImageAttribute` class
|
||||
- **`ISOSettingsImageAttribute()`**
|
||||
Default constructor; delegates to the parameterized constructor with `null`.
|
||||
- **`ISOSettingsImageAttribute(string s)`**
|
||||
Constructor accepting a string argument (unused); initializes `_img` by calling `AssemblyInfo.GetImage(AssemblyNames.IsoSettings.ToString())`.
|
||||
- **`override BitmapImage AssemblyImage { get; }`**
|
||||
Returns the assembly’s icon image, retrieved via `AssemblyInfo.GetImage(AssemblyNames.IsoSettings.ToString())`.
|
||||
- **`override string AssemblyName { get; }`**
|
||||
Returns `"IsoSettings"` (via `AssemblyNames.IsoSettings.ToString()`).
|
||||
- **`override string AssemblyGroup { get; }`**
|
||||
Returns `"Administrative"` (via `eAssemblyGroups.Administrative.ToString()`).
|
||||
- **`override eAssemblyRegion AssemblyRegion { get; }`**
|
||||
Throws `NotImplementedException`.
|
||||
- **`override eAssemblyRegion GetAssemblyRegion()`**
|
||||
Throws `NotImplementedException`.
|
||||
- **`override Type GetAttributeType()`**
|
||||
Returns `typeof(ImageAttribute)`.
|
||||
- **`override BitmapImage GetAssemblyImage()`**
|
||||
Returns `AssemblyImage`.
|
||||
- **`override string GetAssemblyName()`**
|
||||
Returns `AssemblyName`.
|
||||
- **`override string GetAssemblyGroup()`**
|
||||
Returns `AssemblyGroup`.
|
||||
|
||||
> **Note**: Several members (`AssemblyRegion`, `GetAssemblyRegion()`) are unimplemented and throw exceptions at runtime if invoked.
|
||||
|
||||
### 3. Invariants
|
||||
- The `ISOSettingsModule` must be loaded *before* any consumer attempts to resolve `IISOSettingsView` or `IISOSettingsViewModel`, as registration occurs only during `Initialize()`/`RegisterTypes()`.
|
||||
- `AssemblyInfo.GetImage()` and `AssemblyNames.IsoSettings` must be valid and return non-null values at runtime; otherwise, `AssemblyImage` will fail.
|
||||
- The `AssemblyGroup` is hardcoded to `"Administrative"` and cannot be changed without recompilation.
|
||||
- The `ISOSettingsImageAttribute` is intended for use as an assembly-level attribute (via `[assembly: ISOSettingsImageAttribute]`), but its implementation is incomplete—`AssemblyRegion` and related methods are non-functional.
|
||||
|
||||
### 4. Dependencies
|
||||
- **Imports/Dependencies**:
|
||||
- `DTS.Common` and `DTS.Common.Interface` (for `AssemblyInfo`, `AssemblyNames`, `eAssemblyGroups`, `ImageAttribute`, `eAssemblyRegion`)
|
||||
- `Prism.Modularity` (for `IModule`)
|
||||
- `Prism.Ioc` (for `IContainerRegistry`)
|
||||
- `Unity` (for `IUnityContainer`)
|
||||
- `System.ComponentModel.Composition` (for `[Export]`)
|
||||
- `System.Windows.Media.Imaging` (for `BitmapImage`)
|
||||
|
||||
- **Depended upon by**:
|
||||
- The Prism module catalog/loader (via `[Export(typeof(IModule))]` and `[Module(ModuleName = "ISOSettings")]`)
|
||||
- The main shell/application UI (via the `ISOSettingsImageAttribute` assembly attribute, used to display module metadata on the main screen)
|
||||
|
||||
### 5. Gotchas
|
||||
- **`RegisterTypes` uses `IContainerRegistry` but internally relies on `IUnityContainer`**: The method signature suggests Prism’s DI abstraction, but the implementation uses the injected Unity container directly. This may cause confusion or breakage if the module is used with a non-Unity container.
|
||||
- **`AssemblyRegion` and `GetAssemblyRegion()` are unimplemented**: Any attempt to access these will throw `NotImplementedException`. This may be intentional (unused code path) or technical debt.
|
||||
- **Redundant `Initialize()` call in `RegisterTypes`**: Since `Initialize()` is called directly in `RegisterTypes`, and `Initialize()` is also called during Prism’s `Initialize()` lifecycle, there is potential for double-registration if `RegisterTypes` is invoked multiple times (though Unity registrations are idempotent for singleton mappings).
|
||||
- **Unused constructor parameter in `ISOSettingsImageAttribute(string s)`**: The `s` parameter is ignored.
|
||||
- **No validation on image retrieval**: If `AssemblyInfo.GetImage()` returns `null` (e.g., missing image resource), `AssemblyImage` will silently return `null`, potentially causing UI rendering issues.
|
||||
- **Hardcoded string values**: `"IsoSettings"` and `"Administrative"` are derived from enumToString() calls; while safer than literals, they assume the underlying enums (`AssemblyNames`, `eAssemblyGroups`) are correctly defined and stable.
|
||||
Reference in New Issue
Block a user