EventDispatcher for .NET Late-Bound Event Handling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing technologies face challenges in parsing and handling events from .NET objects in late-bound mode, where the object type is not known at design time, requiring dynamic generation of event handlers at runtime to manage events from unknown or third-party .NET components.

Innovation Solution

The EventDispatcher component is generated and initialized with a full path of a .NET assembly, loading the assembly through reflection, reading run-time information, and dynamically building .NET assembler code with intermediate event handlers to collect and pass event data as a generic ObjectEvent, enabling event handling in client applications.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If event handlers are dynamically generated at runtime for late-bound mode, then adaptability to unknown or third-party .NET components is improved, but device complexity increases due to dynamic code generation requirements

Engineering Contradiction:
Improveadaptability to unknown .NET componentsVSAvoidcomplexity of dynamic event handler generation
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces an EventDispatcher component as an intermediary between the client application and the source .NET component. This mediator dynamically generates and attaches event handlers to intercept events from unknown components, translating them into a standardized format for the client application, thereby resolving the contradiction between adaptability and complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The event handler generation is performed dynamically at runtime based on the actual source component being accessed, rather than being statically defined at design time. This dynamic approach allows the system to adapt to any .NET component while managing complexity through on-demand code generation rather than pre-defining all possible handlers.

Inventive Principle:
Principle #15Dynamics

2Ease of operation

If reflection is used to load assemblies and generate objects dynamically, then ease of operation for late-bound mode is improved, but loss of information about event structures increases

Engineering Contradiction:
Improveease of late-bound operationVSAvoidloss of event structure information
Core Design Contradiction:
Ease of operationVSLoss of information

Solution Approach 1:

The EventDispatcher component performs preliminary actions by dynamically generating and attaching event handlers before the client application interacts with the source component. This preliminary code generation captures event structure information that would otherwise be lost in late-bound mode, preserving event names, parameters, and types through the dynamic handler creation process.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7526773B2Parsing and handling events from .NET objects
Publication Date: 2009.04.28 SAP SE
  • US7526773B2 patent drawing
  • US7526773B2 patent drawing
  • US7526773B2 patent drawing

AI summary

Methods and apparatus, including computer program products, for parsing and handling events from .NET objects. The method includes generating and initializing an event dispatcher component with a full path of a .NET assembly, the event dispatcher component containing a source .NET component and an object name of the source .NET component type, the event dispatcher component configured to load the .NET assembly and generate an object through reflection, read run-time information from the object about all events, and generate a new .NET assembly and build .NET assembler code that contains event handlers for all events that can be raised by the object.