Files
DP44/docs/ai/Common/DTS.Common/Events/ISO.md

57 lines
2.7 KiB
Markdown
Raw Normal View History

2026-04-17 14:55:32 -04:00
---
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`