This commit is contained in:
2026-04-17 14:55:32 -04:00
commit bc3ac1d4c9
18017 changed files with 4371742 additions and 0 deletions

View File

@@ -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 codebases 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.