--- source_files: - Common/DTS.Common/Interface/LabDetails/ILabDetailsView.cs - Common/DTS.Common/Interface/LabDetails/ILabDetailsViewModel.cs - Common/DTS.Common/Interface/LabDetails/ILabDetailsMenuView.cs - Common/DTS.Common/Interface/LabDetails/ILabDetailsMenuViewModel.cs generated_at: "2026-04-17T16:34:44.878640+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "c9488231a3aee52d" --- # Documentation: LabDetails Interfaces ## 1. Purpose This module defines four marker interfaces for the LabDetails feature within an MVVM (Model-View-ViewModel) architecture. The interfaces establish type contracts for two distinct UI components: a main LabDetails view with its corresponding view model, and a LabDetails menu view integrated with a ribbon control system. These interfaces enable dependency injection, testability, and loose coupling between UI components and their consumers. ## 2. Public Interface ### ILabDetailsView **Signature:** `public interface ILabDetailsView : IBaseView { }` A marker interface extending `IBaseView`. Represents the main view contract for LabDetails functionality. No members are defined beyond those inherited from `IBaseView`. --- ### ILabDetailsViewModel **Signature:** `public interface ILabDetailsViewModel : IBaseViewModel { }` A marker interface extending `IBaseViewModel`. Represents the view model contract paired with `ILabDetailsView`. No members are defined beyond those inherited from `IBaseViewModel`. --- ### ILabDetailsMenuView **Signature:** `public interface ILabDetailsMenuView : IRibbonView { }` A marker interface extending `IRibbonView`. Represents a menu view contract for LabDetails that integrates with a ribbon control system. No members are defined beyond those inherited from `IRibbonView`. --- ### ILabDetailsMenuViewModel **Signature:** `public interface ILabDetailsMenuViewModel : IRibbonViewModel { }` A marker interface extending `IRibbonViewModel`. Represents the view model contract paired with `ILabDetailsMenuView`. No members are defined beyond those inherited from `IRibbonViewModel`. ## 3. Invariants - Each view interface (`ILabDetailsView`, `ILabDetailsMenuView`) must have a corresponding view model interface (`ILabDetailsViewModel`, `ILabDetailsMenuViewModel`) following the MVVM pairing pattern. - All interfaces are marker interfaces with no additional members; any behavioral contracts are inherited from their respective base interfaces (`IBaseView`, `IBaseViewModel`, `IRibbonView`, `IRibbonViewModel`). - The specific invariants enforced by `IBaseView`, `IBaseViewModel`, `IRibbonView`, and `IRibbonViewModel` are not visible in the provided source. ## 4. Dependencies ### This module depends on: - `DTS.Common.Base` — provides `IBaseView` and `IBaseViewModel` base types - `DTS.Common.RibbonControl` — provides `IRibbonView` and `IRibbonViewModel` base types ### What depends on this module: - Not determinable from the provided source alone. Consumers would typically include concrete implementations of these interfaces and any modules that reference LabDetails views or view models through these contracts. ## 5. Gotchas - **Marker interfaces:** All four interfaces define no members of their own. They serve purely