--- source_files: - Common/DTS.CommonCore/Interface/ExportData/IExportDataView.cs - Common/DTS.CommonCore/Interface/ExportData/IExportDataViewModel.cs - Common/DTS.CommonCore/Interface/ExportData/IExportHeader.cs generated_at: "2026-04-16T12:19:27.871731+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "ccb8183959611900" --- # Documentation: DTS.Common.Interface.ExportData ## 1. Purpose This module defines core interfaces for the data export subsystem within the DTS application. It establishes contracts for the view/viewmodel pair in an MVVM architecture and provides a data structure interface for representing export column headers with selection state. The interfaces serve as integration points between the export functionality and the broader application framework. --- ## 2. Public Interface ### `IExportDataView` **Namespace:** `DTS.Common.Interface` **Inheritance:** `IBaseView` A marker interface for export data views. Defines no members; exists to provide type identity for views that participate in data export operations. --- ### `IExportDataViewModel` **Namespace:** `DTS.Common.Interface` **Inheritance:** `IBaseViewModel` A marker interface for export data view models. Defines no members; exists to provide type identity for view models that support data export operations. --- ### `IExportHeader` **Namespace:** `DTS.Common.Interface.ExportData` **Inheritance:** `INotifyPropertyChanged` Defines a selectable header item for export column configuration. | Property | Type | Access | Description | |----------|------|--------|-------------| | `HeaderName` | `string` | get/set | The display name of the export header/column | | `IsSelected` | `bool` | get/set | Indicates whether this header/column is selected for export | --- ## 3. Invariants - **Namespace inconsistency:** `IExportHeader` resides in `DTS.Common.Interface.ExportData`, while `IExportDataView` and `IExportDataViewModel` reside in `DTS.Common.Interface`. Consumers must reference the correct namespace for each type. - **Property change notification:** Implementations of `IExportHeader` must raise `PropertyChanged` events when `HeaderName` or `IsSelected` changes, as required by `INotifyPropertyChanged` inheritance. - **Base contract compliance:** All three interfaces inherit from framework base types (`IBaseView`, `IBaseViewModel`, `INotifyPropertyChanged`), implying implementations must satisfy those base contracts as well. --- ## 4. Dependencies ### This module depends on: - `DTS.Common.Base` — provides `IBaseView` and `IBaseViewModel` base interfaces - `System.ComponentModel` — provides `INotifyPropertyChanged` interface ### What depends on this module: - **Cannot be determined from source alone.** Consumers would typically be concrete view/viewmodel implementations and export-related services. --- ## 5. Gotchas - **Marker interfaces with no members:** `IExportDataView` and `IExportDataViewModel` define no members beyond their base interfaces. Their utility appears limited to type identification/constraint purposes. It is unclear from source alone whether this is intentional design or incomplete implementation. - **Inconsistent namespace depth:** `IExportHeader` is placed in a more specific namespace (`ExportData` sub-namespace) while the view/viewmodel interfaces are not. The rationale for this inconsistency is not evident from the source. - **No validation contracts:** `IExportHeader.HeaderName` has no nullability annotation or validation requirements defined in the interface. Implementations may handle null/empty strings differently.