protected T RaiseEvent <T, U>(U mappingSource) where T : IEvent, new() { Precondition.For(mappingSource, nameof(mappingSource)).NotNull(); Precondition.For(mapper, nameof(mapper)).NotNull(); T @event = mapper.MapToEvent <U, T>(mappingSource); @event = RaiseEventInternal(@event, null); return(@event); }