--- source_files: - Common/DTS.Common/obj/x86/Debug/GeneratedInternalTypeHelper.g.cs - Common/DTS.Common/obj/x86/Debug/GeneratedInternalTypeHelper.g.i.cs generated_at: "2026-04-16T02:56:51.283838+00:00" model: "Qwen/Qwen3-Coder-Next-FP8" schema_version: 1 sha256: "708a410ec1ac79c2" --- # Debug ## Documentation: `GeneratedInternalTypeHelper` ### 1. Purpose This module provides a WPF-specific runtime helper class used internally during XAML parsing and object initialization. It extends `System.Windows.Markup.InternalTypeHelper` to customize how objects are instantiated, property values are read/written, and event handlers are attached—primarily to support WPF’s XAML infrastructure (e.g., for `x:Class`, `x:Name`, or event wiring in compiled XAML). It is **not intended for direct use** by application code and is auto-generated by the `PresentationBuildTasks` MSBuild task during the build process. ### 2. Public Interface The class is `sealed` and inherits from `InternalTypeHelper`. All members are `protected override` methods—**not public API**—but are included here for completeness. - **`protected override object CreateInstance(Type type, CultureInfo culture)`** Instantiates the given `type` using reflection, allowing both public and non-public constructors (via `BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance`). Returns the new instance. - **`protected override object GetPropertyValue(PropertyInfo propertyInfo, object target, CultureInfo culture)`** Reads the value of `propertyInfo` on `target` using default binding flags (`BindingFlags.Default`). Returns the property value. - **`protected override void SetPropertyValue(PropertyInfo propertyInfo, object target, object value, CultureInfo culture)`** Writes `value` to `propertyInfo` on `target` using default binding flags. - **`protected override Delegate CreateDelegate(Type delegateType, object target, string handler)`** Dynamically creates a delegate of `delegateType` bound to the instance method named `handler` on `target`. Uses reflection to invoke the *non-public* instance method `_CreateDelegate` on `target.GetType()`. ⚠️ **Note**: This relies on an internal implementation detail (`_CreateDelegate`) of the target object’s type. - **`protected override void AddEventHandler(EventInfo eventInfo, object target, Delegate handler)`** Attaches `handler` to the event represented by `eventInfo` on `target` using `EventInfo.AddEventHandler`. ### 3. Invariants - The class is `sealed` and inherits from `System.Windows.Markup.InternalTypeHelper`, meaning it is tightly coupled to WPF’s XAML infrastructure. - All methods use reflection with explicit `BindingFlags`; no method relies on dynamic invocation beyond what is visible in the source. - The `CreateDelegate` method assumes the `target` object’s type exposes a non-public instance method named `_CreateDelegate` accepting `(Type, string)`—this is an internal contract with WPF’s runtime, not a documented public API. - The class is marked with `[EditorBrowsable(EditorBrowsableState.Never)]`, indicating it should never appear in IntelliSense or designer tooling. ### 4. Dependencies - **Depends on**: - `System.Windows.Markup.InternalTypeHelper` (base class) - `System.Activator`, `System.Reflection` (for reflection-based object creation/property/event handling) - `System.Globalization.CultureInfo` (for culture-sensitive operations) - `PresentationBuildTasks` (the MSBuild task that generates this file) - **Used by**: - WPF’s XAML compiler/runtime (e.g., `BamlReader`, `XamlWriter`, or generated BAML code) during deserialization or event wiring. - Likely referenced indirectly via `x:Class` or `x:Name` in XAML files compiled into the same assembly. - *Not* referenced directly by application code. ### 5. Gotchas - **Auto-generated file**: This file is regenerated on every build; manual edits will be lost. - **Non-public contract**: The `_CreateDelegate` reflection call in `CreateDelegate` is fragile—it depends on an undocumented, internal method of the target type. If the target type changes or does not implement `_CreateDelegate`, this will throw a `MissingMethodException` at runtime. - **No public surface area**: This class is strictly internal infrastructure. Developers should never instantiate or extend it. - **Culture handling**: All methods accept a `CultureInfo` parameter but pass it directly to reflection APIs—behavior may vary across cultures (e.g., case sensitivity in property/event names is not affected, but custom type converters might be). - **No error handling visible**: The source shows no explicit exception handling; failures (e.g., missing methods, inaccessible properties) will propagate as reflection exceptions. - **None identified from source alone** for typical usage patterns—only the above technical caveats are evident.