--- source_files: - Common/DTS.CommonCore/Interface/CustomerDetails/ICustomerDetailsView.cs - Common/DTS.CommonCore/Interface/CustomerDetails/ICustomerDetailsViewModel.cs generated_at: "2026-04-16T12:19:49.445469+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "b07af412c78e07b1" --- # Documentation: Customer Details Interfaces ## 1. Purpose This module defines two marker interfaces—`ICustomerDetailsView` and `ICustomerDetailsViewModel`—that establish type identity for customer details components within a Model-View-ViewModel (MVVM) architecture. These interfaces exist to provide a contract for customer-specific views and view models, enabling type-safe binding, dependency injection, and navigation patterns while inheriting core behaviors from base interfaces in the `DTS.Common.Base` namespace. --- ## 2. Public Interface ### `ICustomerDetailsView` - **Namespace:** `DTS.Common.Interface` - **Inheritance:** `IBaseView` (from `DTS.Common.Base`) - **Signature:** ```csharp public interface ICustomerDetailsView : IBaseView { } ``` - **Behavior:** Empty marker interface. Any concrete view implementing this interface signals that it represents a customer details screen. All actual behavior and members are inherited from `IBaseView`. ### `ICustomerDetailsViewModel` - **Namespace:** `DTS.Common.Interface` - **Inheritance:** `IBaseViewModel` (from `DTS.Common.Base`) - **Signature:** ```csharp public interface ICustomerDetailsViewModel : IBaseViewModel { } ``` - **Behavior:** Empty marker interface. Any concrete view model implementing this interface signals that it provides the presentation logic for a customer details view. All actual behavior and members are inherited from `IBaseViewModel`. --- ## 3. Invariants - **Type identity guarantee:** Any class implementing `ICustomerDetailsView` or `ICustomerDetailsViewModel` must also satisfy the contracts of `IBaseView` or `IBaseViewModel` respectively. - **No additional members:** Neither interface defines its own properties, methods, or events; they rely entirely on their base interfaces for functionality. - **Naming convention:** The interfaces follow a naming pattern suggesting a 1:1 correspondence between `ICustomerDetailsView` and `ICustomerDetailsViewModel`. **Note:** Specific invariants regarding `IBaseView` and `IBaseViewModel` cannot be determined from the provided source files. --- ## 4. Dependencies ### This module depends on: - `DTS.Common.Base` — Provides `IBaseView` and `IBaseViewModel` base interfaces. ### What depends on this module: - Cannot be determined from the provided source files alone. Likely consumers include: - Concrete view implementations (e.g., WinForms, WPF, or web views displaying customer details) - Concrete view model implementations for customer details - Navigation or routing services that resolve views by interface type - Dependency injection configurations --- ## 5. Gotchas - **Empty marker interfaces:** Both interfaces define no members of their own. If `IBaseView` and `IBaseViewModel` also lack meaningful members, these interfaces serve purely as type markers. This design is intentional for type discrimination but may confuse developers expecting explicit contracts. - **Base interface contracts unknown:** The actual capabilities and requirements of these interfaces are entirely determined by `IBaseView` and `IBaseViewModel`. Developers must consult those base definitions to understand what members must be implemented. - **Potential tight coupling to base types:** Any changes to `IBaseView` or `IBaseViewModel` will ripple to all implementers of these customer details interfaces.