// ensures changes contains no duplicates
    private static void AddChange(ICollection <ContentTypeChange <TItem> > changes, TItem contentType, ContentTypeChangeTypes changeTypes)
    {
        ContentTypeChange <TItem>?change = changes.FirstOrDefault(x => x.Item == contentType);

        if (change == null)
        {
            changes.Add(new ContentTypeChange <TItem>(contentType, changeTypes));
            return;
        }

        change.ChangeTypes |= changeTypes;
    }
 protected ContentTypeRefreshNotification(ContentTypeChange <T> target, EventMessages messages) : base(target, messages)
 {
 }
 protected void OnUowRefreshedEntity(ContentTypeChange <TItem> .EventArgs args)
 {
     // that one is always immediate (not dispatched, transactional)
     ScopedRefreshedEntity.RaiseEvent(args, This);
 }
 protected void OnChanged(IScope scope, ContentTypeChange <TItem> .EventArgs args)
 {
     scope.Events.Dispatch(Changed, This, args, nameof(Changed));
 }
 public MemberTypeChangedNotification(ContentTypeChange <IMemberType> target, EventMessages messages) : base(target, messages)
 {
 }
 private void MemberTypeService_Changed(IMemberTypeService sender, ContentTypeChange <IMemberType> .EventArgs args)
 {
     _distributedCache.RefreshContentTypeCache(args.Changes.ToArray());
 }
 public MediaTypeRefreshedNotification(ContentTypeChange <IMediaType> target, EventMessages messages) : base(target, messages)
 {
 }