7.3 KiB
7.3 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | |
|---|---|---|---|---|---|
|
2026-04-16T04:47:42.954645+00:00 | Qwen/Qwen3-Coder-Next-FP8 | 1 | e820d21f87955579 |
RealtimeModule
Documentation: RealtimeModule
1. Purpose
The RealtimeModule is a Prism-based modular component responsible for registering the view and view model for the Realtime Channel Selection UI within the application. It integrates with the Unity dependency injection container to expose IRealtimeChannelSelectView and IRealtimeChannelSelectViewModel as singleton services, enabling their reuse and injection elsewhere in the application. Additionally, it declares assembly-level metadata attributes (RealtimeModuleNameAttribute, RealtimeModuleImageAttribute) that identify the module to the host shell (e.g., for UI display on the main screen), including its name, icon, group (Prepare), and region (RealtimeModuleRegion).
2. Public Interface
Class: RealtimeModule
- Namespace:
RealtimeModule - Base: Implements
Prism.Modularity.IModule - Attributes:
[Export(typeof(IModule))][Module(ModuleName = "RealtimeModule")]
| Member | Signature | Description |
|---|---|---|
| Constructor | public RealtimeModule(IUnityContainer unityContainer) |
Injects the Unity container for later registration of types. |
Initialize() |
public void Initialize() |
Registers IRealtimeChannelSelectView → RealtimeChannelSelectView and IRealtimeChannelSelectViewModel → RealtimeChannelSelectViewModel as singleton mappings in _unityContainer. |
OnInitialized(IContainerProvider containerProvider) |
public void OnInitialized(IContainerProvider containerProvider) |
Empty implementation; no logic executed. |
RegisterTypes(IContainerRegistry containerRegistry) |
public void RegisterTypes(IContainerRegistry containerRegistry) |
Delegates to Initialize(), which uses the injected IUnityContainer (note: containerRegistry is unused). |
Class: RealtimeModuleNameAttribute
- Namespace:
RealtimeModule - Base:
TextAttribute(fromDTS.Common.Interface) - Usage:
[assembly: RealtimeModuleName]
| Member | Signature | Description |
|---|---|---|
| Constructor | public RealtimeModuleNameAttribute(string s = null) |
Initializes; AssemblyName is set to AssemblyNames.RealtimeModule.ToString(). |
AssemblyName |
public override string AssemblyName { get; } |
Returns "RealtimeModule" (value of AssemblyNames.RealtimeModule.ToString()). |
GetAttributeType() |
public override Type GetAttributeType() |
Returns typeof(TextAttribute). |
GetAssemblyName() |
public override string GetAssemblyName() |
Returns AssemblyName. |
Class: RealtimeModuleImageAttribute
- Namespace:
RealtimeModule - Base:
ImageAttribute(fromDTS.Common.Interface) - Usage:
[assembly: RealtimeModuleImageAttribute]
| Member | Signature | Description |
|---|---|---|
| Constructor | public RealtimeModuleImageAttribute(string s = null) |
Initializes _img by calling AssemblyInfo.GetImage("RealtimeModule"). |
AssemblyImage |
public override BitmapImage AssemblyImage { get; } |
Returns _img, lazily initialized via AssemblyInfo.GetImage("RealtimeModule"). |
AssemblyName |
public override string AssemblyName { get; } |
Returns "RealtimeModule". |
AssemblyGroup |
public override string AssemblyGroup { get; } |
Returns "Prepare" (value of eAssemblyGroups.Prepare.ToString()). |
AssemblyRegion |
public override eAssemblyRegion AssemblyRegion { get; } |
Returns eAssemblyRegion.RealtimeModuleRegion. |
GetAttributeType() |
public override Type GetAttributeType() |
Returns typeof(ImageAttribute). |
GetAssemblyImage() |
public override BitmapImage GetAssemblyImage() |
Returns AssemblyImage. |
GetAssemblyName() |
public override string GetAssemblyName() |
Returns AssemblyName. |
GetAssemblyGroup() |
public override string GetAssemblyGroup() |
Returns AssemblyGroup. |
GetAssemblyRegion() |
public override eAssemblyRegion GetAssemblyRegion() |
Returns AssemblyRegion. |
3. Invariants
RealtimeModulemust be loaded after the Unity container is available (via Prism’s module initialization lifecycle), asInitialize()relies on_unityContainerbeing non-null.AssemblyNames.RealtimeModuleandeAssemblyGroups.PrepareandeAssemblyRegion.RealtimeModuleRegionmust be defined in referenced assemblies (DTS.Common,DTS.Common.Interface) — their values are not defined in this file.AssemblyInfo.GetImage(string)is assumed to return a validBitmapImagefor"RealtimeModule"; failure here would cause runtime exceptions during attribute instantiation.- The view/view model registrations in
Initialize()are singleton (default Unity behavior forRegisterType<T, TImpl>()without explicit lifetime manager).
4. Dependencies
This module depends on:
Unity(IUnityContainer) — for DI registration.Prism.Modularity(IModule,IContainerProvider,IContainerRegistry) — module lifecycle integration.DTS.CommonandDTS.Common.Interface— forAssemblyNames,eAssemblyGroups,eAssemblyRegion,TextAttribute,ImageAttribute, andAssemblyInfo.GetImage(...).System.Windows.Media.Imaging— forBitmapImage.
This module is depended on by:
- The Prism bootstrapper/module catalog — via
[Export(typeof(IModule))]and[Module(...)]attributes. - Any consumer requiring
IRealtimeChannelSelectVieworIRealtimeChannelSelectViewModel— these are registered as singletons. - The host shell/UI — via
RealtimeModuleImageAttributeandRealtimeModuleNameAttribute, used to render module metadata (e.g., in a module summary panel).
5. Gotchas
- Redundant
Initialize()call:RegisterTypes()callsInitialize(), butInitialize()uses_unityContainer(injected via constructor), whileRegisterTypes()receivesIContainerRegistry. This suggests potential confusion or legacy code:IContainerRegistryis unused, and the method relies on the oldIUnityContainerinstance. This may cause issues ifRegisterTypes()is invoked before_unityContaineris set (though Prism guaranteesInitialize()runs first). - No
OnInitialized()logic: TheOnInitialized()method is empty, but its signature implies extensibility — no further initialization is performed beyond registration. - Assembly image loading:
AssemblyInfo.GetImage(...)is called in the attribute constructor. If the image resource is missing or malformed, attribute instantiation (at assembly load time) may fail silently or throw, depending onAssemblyInfoimplementation. - No versioning or deprecation markers: Attributes lack versioning or deprecation info, making future refactoring harder to track.
- Namespace
RealtimeModuleis reused: The namespace matches the module name and class name — may cause confusion with the assembly name. AllowMultiple = falseon attributes: Only one instance of each attribute is allowed per assembly — expected, but not enforced at compile time.
None identified beyond the above.