46 lines
3.8 KiB
Markdown
46 lines
3.8 KiB
Markdown
|
|
---
|
|||
|
|
source_files:
|
|||
|
|
- Common/DTS.CommonCore/Interface/_GenericModule/IGenericModuleView.cs
|
|||
|
|
- Common/DTS.CommonCore/Interface/_GenericModule/IGenericModuleViewModel.cs
|
|||
|
|
generated_at: "2026-04-16T02:23:01.843288+00:00"
|
|||
|
|
model: "Qwen/Qwen3-Coder-Next-FP8"
|
|||
|
|
schema_version: 1
|
|||
|
|
sha256: "857aa9f92afca967"
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# _GenericModule
|
|||
|
|
|
|||
|
|
## 1. Purpose
|
|||
|
|
This module defines the foundational view and view-model interfaces for generic modules within the system’s UI architecture. It establishes a contract for components that follow the Model-View-ViewModel (MVVM) pattern, enabling consistent separation of UI presentation logic from business logic across different module types. These interfaces inherit from base abstractions (`IBaseView` and `IBaseViewModel`) to ensure uniform behavior and lifecycle management across all modules in the application.
|
|||
|
|
|
|||
|
|
## 2. Public Interface
|
|||
|
|
No public types beyond the interfaces themselves are defined in the provided source files. The interfaces are:
|
|||
|
|
|
|||
|
|
- **`IGenericModuleView`**
|
|||
|
|
*Signature:* `public interface IGenericModuleView : IBaseView`
|
|||
|
|
*Behavior:* Serves as a marker interface for UI views associated with generic modules. It inherits from `IBaseView`, implying it adheres to the base view contract (e.g., lifecycle events, data binding setup), though the specific members of `IBaseView` are not visible here.
|
|||
|
|
|
|||
|
|
- **`IGenericModuleViewModel`**
|
|||
|
|
*Signature:* `public interface IGenericModuleViewModel : IBaseViewModel`
|
|||
|
|
*Behavior:* Serves as a marker interface for view models associated with generic modules. It inherits from `IBaseViewModel`, implying it conforms to the base view model contract (e.g., property change notification, command exposure), though the specific members of `IBaseViewModel` are not visible here.
|
|||
|
|
|
|||
|
|
## 3. Invariants
|
|||
|
|
- `IGenericModuleView` and `IGenericModuleViewModel` are *marker interfaces* with no additional members or constraints beyond their base interfaces.
|
|||
|
|
- Any implementation of `IGenericModuleView` must also satisfy the contract of `IBaseView`.
|
|||
|
|
- Any implementation of `IGenericModuleViewModel` must also satisfy the contract of `IBaseViewModel`.
|
|||
|
|
- No validation, state, or ordering guarantees are defined at this level; invariants are delegated to the base interfaces and concrete implementations.
|
|||
|
|
|
|||
|
|
## 4. Dependencies
|
|||
|
|
- **Depends on:**
|
|||
|
|
- `DTS.Common.Base` namespace (specifically, `IBaseView` and `IBaseViewModel`).
|
|||
|
|
- **Used by:**
|
|||
|
|
- Unknown from this source alone. These interfaces are likely consumed by module registration systems, dependency injection containers, or UI framework components (e.g., view/view-model locators) that rely on type constraints to wire generic modules.
|
|||
|
|
- **No external libraries or modules** are imported beyond `DTS.Common.Base`.
|
|||
|
|
|
|||
|
|
## 5. Gotchas
|
|||
|
|
- **Ambiguity in base contracts:** Since `IBaseView` and `IBaseViewModel` are not defined in the provided sources, their exact contract (e.g., required properties, events, or lifecycle methods) is unknown. This may lead to confusion if consumers assume additional behavior.
|
|||
|
|
- **Marker-only interfaces:** The lack of members in `IGenericModuleView` and `IGenericModuleViewModel` means they provide no runtime guarantees beyond type identity. Consumers must rely on convention or additional attributes (e.g., `[ViewFor]`, `[ViewModelFor]`) to associate views and view models.
|
|||
|
|
- **Namespace placement:** Both interfaces reside in `DTS.Common.Interface`, but under a subfolder `_GenericModule` (with underscore), which may be unintentional or legacy. This could cause confusion in discovery or tooling.
|
|||
|
|
- **No versioning or deprecation markers:** Absence of `[Obsolete]` attributes or versioning hints suggests these interfaces are stable, but historical usage may have evolved beyond their original intent.
|
|||
|
|
|
|||
|
|
None identified from source alone beyond the above.
|