Files
DP44/docs/ai/Common/DTS.Common/Base/Interface.md

88 lines
4.5 KiB
Markdown
Raw Normal View History

2026-04-17 14:55:32 -04:00
---
source_files:
- Common/DTS.Common/Base/Interface/IBaseClass.cs
- Common/DTS.Common/Base/Interface/IViewModel.cs
- Common/DTS.Common/Base/Interface/IBaseView.cs
- Common/DTS.Common/Base/Interface/IBaseWindow.cs
- Common/DTS.Common/Base/Interface/IBaseModel.cs
- Common/DTS.Common/Base/Interface/IBasePropertyChanged.cs
- Common/DTS.Common/Base/Interface/IHeaderInfoProvider.cs
- Common/DTS.Common/Base/Interface/IBaseWindowModel.cs
- Common/DTS.Common/Base/Interface/IBaseViewModel.cs
generated_at: "2026-04-17T16:04:27.061097+00:00"
model: "zai-org/GLM-5-FP8"
schema_version: 1
sha256: "9843a728bff22f95"
---
# Interface
### Purpose
This module defines the fundamental contracts for the MVVM (Model-View-ViewModel) architecture used within the `DTS.CommonCore` library. It establishes the base interfaces for property change notification, data models, views, and view models, ensuring a consistent approach to data binding and lifecycle management across the system.
### Public Interface
* **`interface IBasePropertyChanged : INotifyPropertyChanged`**
* Extends `INotifyPropertyChanged` to add a manual notification method.
* `void OnPropertyChanged(string propertyName)`: Raises the `PropertyChanged` event for the specified property name.
* **`interface IBaseClass : IBasePropertyChanged`**
* A marker interface for base classes that support property change notification. It defines no additional members.
* **`interface IBaseModel : IBasePropertyChanged`**
* Represents a data model with a persistent state tracking capability.
* `bool IsSaved { get; }`: Gets a value indicating whether the model is saved.
* **`interface IViewModel`**
* Defines a basic view model wrapper around a model object.
* `object Model { get; set; }`: Gets or sets the underlying data model object.
* **`interface IBaseView`**
* Defines a view element capable of data binding.
* `object DataContext { get; set; }`: Gets or sets the data context for the view.
* **`interface IBaseWindow`**
* Defines a window element capable of data binding.
* `object DataContext { get; set; }`: Gets or sets the data context for the window.
* **`interface IHeaderInfoProvider<T>`**
* Provides a mechanism for classes to expose header information for XAML binding.
* `T HeaderInfo { get; }`: Gets the header information.
* **`interface IBaseViewModel : IBasePropertyChanged`**
* Defines the lifecycle and state properties for a standard view model.
* `bool IsMenuIncluded { get; set; }`: Gets or sets whether a menu is included.
* `bool IsNavigationIncluded { get; set; }`: Gets or sets whether navigation is included.
* `bool IsBusy { get; set; }`: Gets or sets the busy state.
* `bool IsDirty { get; }`: Gets whether the view model has unsaved changes.
* `void Activated()`: Called when the view model is activated.
* `void Cleanup()`: Synchronously cleans up resources.
* `Task CleanupAsync()`: Asynchronously cleans up resources.
* `void Initialize()`: Initializes the view model.
* `void Initialize(object parameter)`: Initializes the view model with a parameter.
* `void Initialize(object parameter, object model)`: Initializes the view model with a parameter and a model.
* `Task InitializeAsync()`: Asynchronously initializes the view model.
* `Task InitializeAsync(object parameter)`: Asynchronously initializes the view model with a parameter.
* **`interface IBaseWindowModel : INotifyPropertyChanged`**
* Defines the lifecycle and state properties for a window-level model.
* `bool IsMenuIncluded { get; set; }`
* `bool IsNavigationIncluded { get; set; }`
* `bool IsBusy { get; set; }`
* `bool IsDirty { get; }`
* `void Activated()`
* `void Cleanup()`
* `Task CleanupAsync()`
* `void Initialize()`
* `void Initialize(object parameter)`
* `Task InitializeAsync()`
* `Task InitializeAsync(object parameter)`
### Invariants
* `IBaseView.DataContext` and `IBaseWindow.DataContext` must accept an object that is typically an implementation of `IBaseViewModel` or `IBaseWindowModel`.
* `IBaseViewModel.Initialize` overloads suggest that initialization logic must handle cases with zero, one, or two parameters.
* `IBaseWindowModel` inherits from `INotifyPropertyChanged` directly, whereas `IBaseViewModel` inherits from `IBasePropertyChanged`.
### Dependencies
* **Dependencies:** `System.ComponentModel`, `System.Threading.Tasks`.
* **Dep