private void RaiseEvent(EventCall call, IEventRaiserArgumentProvider argumentProvider)
            {
                Delegate raiseMethod;

                if (this.RegisteredEventHandlers.TryGetValue(call.Event, out raiseMethod))
                {
                    var arguments = argumentProvider.GetEventArguments(this.FakeManager.Object);

                    try
                    {
                        raiseMethod.DynamicInvoke(arguments);
                    }
                    catch (TargetInvocationException ex)
                    {
                        if (ex.InnerException != null)
                        {
                            // Exceptions thrown by event handlers should propagate outward as is, not
                            // be wrapped in a TargetInvocationException.
                            TryPreserveStackTrace(ex.InnerException);
                            throw ex.InnerException;
                        }

                        throw;
                    }
                }
            }
            private void RaiseEvent(EventCall call, IEventRaiserArgumentProvider argumentProvider)
            {
                if (this.RegisteredEventHandlers.TryGetValue(call.Event, out var raiseMethod))
                {
                    var arguments = argumentProvider.GetEventArguments(this.fakeManager.Object !);

                    try
                    {
                        raiseMethod.DynamicInvoke(arguments);
                    }
                    catch (TargetInvocationException ex)
                    {
                        // Exceptions thrown by event handlers should propagate outward as is, not
                        // be wrapped in a TargetInvocationException.
                        ex.InnerException?.Rethrow();
                        throw;
                    }
                }
            }
 public bool TryTakeArgumentProviderFor(Delegate eventHandler, out IEventRaiserArgumentProvider argumentProvider)
 {
     return(this.map.TryRemove(eventHandler, out argumentProvider));
 }
 public void AddArgumentProvider(Delegate eventHandler, IEventRaiserArgumentProvider argumentProvider)
 {
     this.map[eventHandler] = argumentProvider;
 }
            private void RaiseEvent(EventCall call, IEventRaiserArgumentProvider argumentProvider)
            {
                Delegate raiseMethod;

                if (this.RegisteredEventHandlers.TryGetValue(call.Event, out raiseMethod))
                {
                    var arguments = argumentProvider.GetEventArguments(this.FakeManager.Object);

                    try
                    {
                        raiseMethod.DynamicInvoke(arguments);
                    }
                    catch (TargetInvocationException ex)
                    {
                        if (ex.InnerException != null)
                        {
                            // Exceptions thrown by event handlers should propagate outward as is, not
                            // be wrapped in a TargetInvocationException.
                            TryPreserveStackTrace(ex.InnerException);
                            throw ex.InnerException;
                        }

                        throw;
                    }
                }
            }