init
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
---
|
||||
source_files:
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/Menu/IMenuView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/Menu/IMenuViewModel.cs
|
||||
generated_at: "2026-04-16T02:32:59.510070+00:00"
|
||||
model: "Qwen/Qwen3-Coder-Next-FP8"
|
||||
schema_version: 1
|
||||
sha256: "f8804451d31ebe71"
|
||||
---
|
||||
|
||||
# Menu
|
||||
|
||||
## 1. Purpose
|
||||
This module defines the core interfaces for the menu layer in the DTS Viewer component, establishing a contract between the view and view model following the MVVM (Model-View-ViewModel) pattern. It extends base abstractions (`IBaseView`, `IBaseViewModel`) to provide a minimal, focused interface hierarchy specifically for menu-related UI concerns—enabling separation of concerns, testability, and decoupled UI implementation while maintaining consistency with the broader codebase’s architectural patterns.
|
||||
|
||||
## 2. Public Interface
|
||||
- **`IMenuView`**
|
||||
*Signature:* `public interface IMenuView : IBaseView`
|
||||
*Behavior:* Represents the view layer for menu UI. It inherits from `IBaseView`, implying it adheres to the base view contract (e.g., lifecycle, binding context), but contains no additional members beyond inheritance. Its purpose is to serve as a typed marker interface for menu-specific views.
|
||||
|
||||
- **`IMenuViewModel`**
|
||||
*Signature:* `public interface IMenuViewModel : IBaseViewModel`
|
||||
*Behavior:* Represents the view model for menu logic. It exposes a single read-only property `View` of type `IMenuView`, providing access to the associated view instance. This enables the view model to interact with or query the view when necessary (e.g., for coordination, state synchronization, or view-specific operations), while still maintaining separation of concerns.
|
||||
|
||||
## 3. Invariants
|
||||
- `IMenuView` must be implemented by any concrete class serving as the menu UI view.
|
||||
- `IMenuViewModel` implementations must provide a non-null `View` property referencing an instance of a type that implements `IMenuView`.
|
||||
- The `View` property in `IMenuViewModel` is expected to be set during initialization and remain stable for the lifetime of the view model (though not explicitly enforced by the interface).
|
||||
- Both interfaces extend `IBaseView` and `IBaseViewModel` respectively, inheriting all invariants and contracts defined in those base interfaces (not shown here, but assumed to be part of the `DTS.Common.Base` namespace).
|
||||
|
||||
## 4. Dependencies
|
||||
- **Depends on:**
|
||||
- `DTS.Common.Base` (specifically `IBaseView` and `IBaseViewModel`)
|
||||
- **Depended on by (inferred):**
|
||||
- Concrete implementations of `IMenuView` (e.g., WPF/WinForms/Xamarin UI controls)
|
||||
- Concrete implementations of `IMenuViewModel` (e.g., menu logic classes)
|
||||
- Framework or DI containers that resolve menu-related view/view model pairs
|
||||
- Higher-level components (e.g., shell or navigation services) that coordinate menu UI with other parts of the viewer
|
||||
|
||||
## 5. Gotchas
|
||||
- The interfaces are intentionally minimal—`IMenuView` has no members beyond inheritance, and `IMenuViewModel` only exposes the `View` property. Developers should not expect built-in command, data binding, or event handling contracts here; those would be defined in derived interfaces or concrete classes.
|
||||
- The `View` property in `IMenuViewModel` is not initialized by the interface itself; implementations must ensure it is set (likely via constructor or property injection) to avoid `NullReferenceException` at runtime.
|
||||
- No guidance is provided on how view/view model pairing is established (e.g., via DI, factory, or manual wiring), which may lead to inconsistency across implementations.
|
||||
- None identified from source alone.
|
||||
Reference in New Issue
Block a user