--- 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`. 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` A class encapsulating the data passed when the event is raised. **Constructor:** ```csharp public ExtraPropertiesChangedEventArgs(IList extraProperties, object producer, object consumer) ``` **Properties:** | Property | Type | Access | Description | |----------|------|--------|-------------| | `ExtraProperties` | `IList` | `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` interface - `DTS.Common.Interface.ISO.ExtraProperties` - Provides `IExtraProperty` interface - `Prism.Events` - Provides `PubSubEvent` 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`