init
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user