4.7 KiB
4.7 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | |||
|---|---|---|---|---|---|---|---|
|
2026-04-16T02:24:36.468213+00:00 | Qwen/Qwen3-Coder-Next-FP8 | 1 | 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 anIExportDataView.
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
INotifyPropertyChangedto support data binding (e.g., UI controls reflecting selection state changes).
3. Invariants
IExportHeader.IsSelectedmust be observable viaINotifyPropertyChanged.PropertyChangedevents when modified, as required byINotifyPropertyChanged.IExportHeader.HeaderNamemust be non-null (though not validated in the interface itself—implementation responsibility).IExportDataViewandIExportDataViewModelare marker interfaces; their implementations must conform to the base contracts ofIBaseViewandIBaseViewModelrespectively (behavior of which is defined elsewhere and not derivable from this source).- No ordering guarantees are specified for
IExportHeaderinstances (e.g., no requirement for stable sort order or index-based access).
4. Dependencies
- Depends on:
DTS.Common.Base.IBaseView(fromDTS.Common.Base)DTS.Common.Base.IBaseViewModel(fromDTS.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
DTScodebase. - 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).
- Likely concrete implementations in UI layer (e.g., WPF views, view models, and header models) within the
5. Gotchas
- Ambiguity in base interfaces: Behavior of
IBaseViewandIBaseViewModelis not defined here; their contracts (e.g., lifecycle methods, event patterns) must be referenced separately. - No header ordering or grouping:
IExportHeaderprovides 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: WhileHeaderNameis 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:
IExportHeaderresides inDTS.Common.Interface.ExportData, whileIExportDataViewandIExportDataViewModelare inDTS.Common.Interface(noExportDatasub-namespace). This may cause discoverability or organization confusion.