--- source_files: - Common/DTS.CommonCore/Interface/Pagination/IPaginationView.cs - Common/DTS.CommonCore/Interface/Pagination/IPaginationViewModel.cs - Common/DTS.CommonCore/Interface/Pagination/IFilterableListView.cs generated_at: "2026-04-16T12:09:07.697429+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "17272f9179ee1d83" --- # Documentation: Pagination Interfaces ## 1. Purpose This module defines core interfaces for pagination and filtering functionality within a view/view-model architecture. It provides marker interfaces for pagination-capable views and view models (`IPaginationView`, `IPaginationViewModel`) that integrate with a base view system, as well as a behavioral interface (`IFilterableListView`) for list views that support dynamic filtering. These interfaces establish contracts for UI components that need to handle paginated data and user-driven filter operations. --- ## 2. Public Interface ### `IPaginationView` **Namespace:** `DTS.Common.Interface` **Inheritance:** `IBaseView` A marker interface for views that support pagination. Defines no members of its own; its contract is purely type identity, indicating that a view participates in pagination workflows. --- ### `IPaginationViewModel` **Namespace:** `DTS.Common.Interface` **Inheritance:** `IBaseViewModel` A marker interface for view models that support pagination. Like `IPaginationView`, it defines no members and serves as a type marker for pagination-capable view models within the system. --- ### `IFilterableListView` **Namespace:** `DTS.Common.Interface.Pagination` An interface for views that support filterable list functionality. | Member | Signature | Description | |--------|-----------|-------------| | `Filter` | `void Filter(object tag, string term)` | Applies a filter to the list view using the provided tag and search term. | | `ClearAllFilters` | `void ClearAllFilters()` | Removes all active filters from the list view. | | `ListViewId` | `string ListViewId { get; }` | Read-only property returning the identifier for this list view. | --- ## 3. Invariants - `IPaginationView` and `IPaginationViewModel` must be assignable to `IBaseView` and `IBaseViewModel` respectively (enforced by inheritance). - `IFilterableListView.ListViewId` must return a valid string identifier; whether null or empty strings are permitted is not specified in the source. - The `Filter` method's `tag` parameter is of type `object`, implying any reference or value type may be passed; the semantic contract for this parameter is not defined in the source. --- ## 4. Dependencies ### This module depends on: - `DTS.Common.Base` — provides `IBaseView` and `IBaseViewModel` base interfaces that `IPaginationView` and `IPaginationViewModel` extend. ### What depends on this module: - Cannot be determined from the provided source files alone. These interfaces are likely consumed by concrete view/view model implementations and any framework code that handles pagination or filtering logic. --- ## 5. Gotchas 1. **Inconsistent namespace structure**: `IPaginationView` and `IPaginationViewModel` reside in `DTS.Common.Interface`, while `IFilterableListView` resides in `DTS.Common.Interface.Pagination`. This may cause confusion when importing or organizing related types. 2. **Marker interfaces with no members**: `IPaginationView` and `IPaginationViewModel` define no members, suggesting they may be used for type checking, dependency injection registration, or convention-based wiring. Their actual utility depends on framework-level code not shown here. 3. **Ambiguous `tag` parameter**: The `Filter(object tag, string term)` method accepts an untyped `object` parameter. Without additional documentation or implementation code, the intended use of this parameter (e.g., column identifier, filter type enum, or other metadata) is unclear.