--- source_files: - Common/DTS.CommonCore/Interface/DownloadData/IDownloadDataView.cs - Common/DTS.CommonCore/Interface/DownloadData/IDownloadDataViewModel.cs generated_at: "2026-04-16T12:17:08.936258+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "3467185c7a4c208b" --- # Documentation: Download Data Interfaces ## 1. Purpose This module defines the contractual interfaces for the View and ViewModel components within a "Download Data" feature, adhering to a Model-View-ViewModel (MVVM) architectural pattern. It establishes a type hierarchy for download-specific UI components by extending base view and viewModel interfaces, allowing for polymorphic handling of download views within the broader `DTS.Common` system. ## 2. Public Interface ### `IDownloadDataView` * **Namespace:** `DTS.Common.Interface` * **Inheritance:** `IBaseView` * **Signature:** ```csharp public interface IDownloadDataView : IBaseView ``` * **Description:** A marker interface intended to represent the View layer for a data download operation. It inherits from `IBaseView` but defines no additional members. ### `IDownloadDataViewModel` * **Namespace:** `DTS.Common` * **Inheritance:** `IBaseViewModel` * **Signature:** ```csharp public interface IDownloadDataViewModel : IBaseViewModel ``` * **Description:** A marker interface intended to represent the ViewModel layer for a data download operation. It inherits from `IBaseViewModel` but defines no additional members. ## 3. Invariants * **Base Type Compliance:** Any class implementing `IDownloadDataView` must also implement `IBaseView`. Similarly, any class implementing `IDownloadDataViewModel` must also implement `IBaseViewModel`. * **Member Expectations:** As both interfaces currently define no members, they rely entirely on the contracts defined by their parent interfaces (`IBaseView` and `IBaseViewModel`). ## 4. Dependencies * **External Dependencies:** * `DTS.Common.Base`: Both interfaces depend on this namespace for `IBaseView` and `IBaseViewModel`. * **Dependents:** Unknown from source alone. It is expected that concrete View and ViewModel classes within the "Download Data" feature will implement these interfaces. ## 5. Gotchas * **Empty Interfaces:** Both `IDownloadDataView` and `IDownloadDataViewModel` are currently empty (marker interfaces). They do not define properties such as `DownloadCommand`, `ProgressPercentage`, or `Cancel` methods that one might expect for a download feature. Functionality must be inferred from the base interfaces or implemented in concrete classes without interface enforcement. * **Namespace Inconsistency:** The View interface (`IDownloadDataView`) resides in `DTS.Common.Interface`, while the ViewModel interface (`IDownloadDataViewModel`) resides in the root `DTS.Common` namespace. This discrepancy may cause confusion regarding file organization or referencing.