/// <summary> /// Registers all causes, which may be combined and separated by semicolons (;) to /// the projection such that later matches will be dispatched to the projection. /// For example: string whenMatchingCauses = "User:new;User:contact;User:name"; /// </summary> /// <param name="projection">The <see cref="IProjection"/> to which matches are dispatched</param> /// <param name="whenMatchingCauses">The array with one or more cause patterns separated by semicolons.</param> public void MayDispatchTo(IProjection projection, string[] whenMatchingCauses) { foreach (var whenMatchingCause in whenMatchingCauses) { var cause = Cause.DetermineFor(whenMatchingCause); if (!_mappedProjections.TryGetValue(cause, out var projections)) { projections = new List <IProjection>(); _mappedProjections.Add(cause, projections); } projections.Add(projection); } }