Files

74 lines
3.5 KiB
Markdown
Raw Permalink Normal View History

2026-04-17 14:55:32 -04:00
---
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.