57 lines
2.7 KiB
Markdown
57 lines
2.7 KiB
Markdown
---
|
|
source_files:
|
|
- Common/DTS.Common/Events/ISO/ExtraPropertiesChangedEvent.cs
|
|
generated_at: "2026-04-17T16:43:15.351224+00:00"
|
|
model: "zai-org/GLM-5-FP8"
|
|
schema_version: 1
|
|
sha256: "f41653a888428aaa"
|
|
---
|
|
|
|
# Documentation: ExtraPropertiesChangedEvent.cs
|
|
|
|
## 1. Purpose
|
|
|
|
This module provides a Prism-based event mechanism for broadcasting changes to "extra properties" within an ISO-related domain. It enables loose coupling between producers and consumers of property change notifications by leveraging the `PubSubEvent` pattern from Prism's event aggregation framework. The event carries metadata about which properties changed, the object that produced the change, and the intended consumer.
|
|
|
|
## 2. Public Interface
|
|
|
|
### `ExtraPropertiesChangedEvent`
|
|
A class that extends `PubSubEvent<ExtraPropertiesChangedEventArgs>`. This is the event token used to subscribe to or publish extra property change notifications via a Prism `IEventAggregator`.
|
|
|
|
**Signature:**
|
|
```csharp
|
|
public class ExtraPropertiesChangedEvent : PubSubEvent<ExtraPropertiesChangedEventArgs> { }
|
|
```
|
|
|
|
### `ExtraPropertiesChangedEventArgs`
|
|
A class encapsulating the data passed when the event is raised.
|
|
|
|
**Constructor:**
|
|
```csharp
|
|
public ExtraPropertiesChangedEventArgs(IList<IExtraProperty> extraProperties, object producer, object consumer)
|
|
```
|
|
|
|
**Properties:**
|
|
|
|
| Property | Type | Access | Description |
|
|
|----------|------|--------|-------------|
|
|
| `ExtraProperties` | `IList<IExtraProperty>` | `get; private set;` | The collection of extra properties that changed. |
|
|
| `Producer` | `object` | `get; private set;` | The object that produced the property changes. |
|
|
| `Consumer` | `object` | `get; private set;` | The intended consumer of the property changes. |
|
|
|
|
## 3. Invariants
|
|
|
|
- **Immutability after construction**: All properties (`ExtraProperties`, `Producer`, `Consumer`) are set exclusively via the constructor and cannot be modified afterward due to `private set` accessors.
|
|
- **No null validation in constructor**: The constructor does not perform null checks on any parameters; callers may pass `null` values which will be assigned directly.
|
|
- **Reference semantics**: The `ExtraProperties` list is stored by reference, not copied; modifications to the original list after construction could affect the event args.
|
|
|
|
## 4. Dependencies
|
|
|
|
**This module depends on:**
|
|
- `System` - Core .NET framework
|
|
- `System.Collections.Generic` - For `IList<T>` interface
|
|
- `DTS.Common.Interface.ISO.ExtraProperties` - Provides `IExtraProperty` interface
|
|
- `Prism.Events` - Provides `PubSubEvent<T>` base class (Prism library)
|
|
|
|
**What depends on this module:**
|
|
- Cannot be determined from this source file alone. Consumers would be any module that publishes or subscribes to `ExtraPropertiesChangedEvent` |