59 lines
4.7 KiB
Markdown
59 lines
4.7 KiB
Markdown
|
|
---
|
|||
|
|
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-16T02:24:36.468213+00:00"
|
|||
|
|
model: "Qwen/Qwen3-Coder-Next-FP8"
|
|||
|
|
schema_version: 1
|
|||
|
|
sha256: "ccb8183959611900"
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# ExportData
|
|||
|
|
|
|||
|
|
## Documentation: Export Data Module Interfaces
|
|||
|
|
|
|||
|
|
### 1. Purpose
|
|||
|
|
This module defines core interfaces for the export data feature, establishing the contract between the view, view model, and header data structures in a MVVM (Model-View-ViewModel) architecture. It provides typed abstractions for UI components that handle data export functionality—specifically, enabling selection and display of exportable fields/columns via `IExportHeader`, while decoupling UI (`IExportDataView`) and state/logic (`IExportDataViewModel`) layers through base interfaces. The module serves as a minimal, extensible foundation for export-related UIs, likely used in desktop or WPF-based client applications given the `INotifyPropertyChanged` dependency.
|
|||
|
|
|
|||
|
|
### 2. Public Interface
|
|||
|
|
|
|||
|
|
#### `IExportDataView`
|
|||
|
|
- **Namespace**: `DTS.Common.Interface`
|
|||
|
|
- **Inherits**: `IBaseView`
|
|||
|
|
- **Description**: Marker interface for the view layer in the export data feature. No additional members beyond those inherited from `IBaseView`. Used to enforce type safety and enable dependency injection or view resolution for export-related UI components.
|
|||
|
|
|
|||
|
|
#### `IExportDataViewModel`
|
|||
|
|
- **Namespace**: `DTS.Common.Interface`
|
|||
|
|
- **Inherits**: `IBaseViewModel`
|
|||
|
|
- **Description**: Marker interface for the view model layer in the export data feature. No additional members beyond those inherited from `IBaseViewModel`. Represents the state and behavior (e.g., export logic, header management) backing an `IExportDataView`.
|
|||
|
|
|
|||
|
|
#### `IExportHeader`
|
|||
|
|
- **Namespace**: `DTS.Common.Interface.ExportData`
|
|||
|
|
- **Inherits**: `INotifyPropertyChanged`
|
|||
|
|
- **Properties**:
|
|||
|
|
- `string HeaderName { get; set; }` – The display name of the export header/column.
|
|||
|
|
- `bool IsSelected { get; set; }` – Indicates whether this header is included in the current export operation.
|
|||
|
|
- **Description**: Represents a single column or field available for export. Implements `INotifyPropertyChanged` to support data binding (e.g., UI controls reflecting selection state changes).
|
|||
|
|
|
|||
|
|
### 3. Invariants
|
|||
|
|
- `IExportHeader.IsSelected` must be observable via `INotifyPropertyChanged.PropertyChanged` events when modified, as required by `INotifyPropertyChanged`.
|
|||
|
|
- `IExportHeader.HeaderName` must be non-null (though not validated in the interface itself—implementation responsibility).
|
|||
|
|
- `IExportDataView` and `IExportDataViewModel` are *marker interfaces*; their implementations must conform to the base contracts of `IBaseView` and `IBaseViewModel` respectively (behavior of which is defined elsewhere and not derivable from this source).
|
|||
|
|
- No ordering guarantees are specified for `IExportHeader` instances (e.g., no requirement for stable sort order or index-based access).
|
|||
|
|
|
|||
|
|
### 4. Dependencies
|
|||
|
|
- **Depends on**:
|
|||
|
|
- `DTS.Common.Base.IBaseView` (from `DTS.Common.Base`)
|
|||
|
|
- `DTS.Common.Base.IBaseViewModel` (from `DTS.Common.Base`)
|
|||
|
|
- `System.ComponentModel.INotifyPropertyChanged` (standard .NET interface)
|
|||
|
|
- **Depended on by**:
|
|||
|
|
- Likely concrete implementations in UI layer (e.g., WPF views, view models, and header models) within the `DTS` codebase.
|
|||
|
|
- No direct usage of these interfaces is visible in the provided sources, so concrete consumers must be inferred from other modules (e.g., export service, UI project).
|
|||
|
|
|
|||
|
|
### 5. Gotchas
|
|||
|
|
- **Ambiguity in base interfaces**: Behavior of `IBaseView` and `IBaseViewModel` is not defined here; their contracts (e.g., lifecycle methods, event patterns) must be referenced separately.
|
|||
|
|
- **No header ordering or grouping**: `IExportHeader` provides no mechanism for specifying column order, group, or priority—implementation must handle this externally (e.g., via collection ordering in the view model).
|
|||
|
|
- **No validation on `HeaderName`**: While `HeaderName` is non-nullable in C# reference type semantics, the interface does not enforce non-empty strings; implementations may need to guard against empty/whitespace names.
|
|||
|
|
- **No export-specific metadata**: The interface lacks fields for data type, format string, or export constraints (e.g., required, max length)—these would need to be added in derived interfaces or implementations.
|
|||
|
|
- **Namespace inconsistency**: `IExportHeader` resides in `DTS.Common.Interface.ExportData`, while `IExportDataView` and `IExportDataViewModel` are in `DTS.Common.Interface` (no `ExportData` sub-namespace). This may cause discoverability or organization confusion.
|