internal DomainEventEntryRegistration(IDomainEventCatalog catalog, IDomainEventEntry entry)
        {
            Contract.Requires(entry != null);
            Contract.Requires(catalog != null);

            _catalog = catalog;
            Entry    = entry;
        }
        public void Remove(IDomainEventEntry entry)
        {
            List <IDomainEventEntry> entries;

            if (_entries.TryGetValue(entry.DomainEventType, out entries))
            {
                Contract.Assume(entries != null);

                entries.Remove(entry);

                Contract.Assume(_entries.TryGetValue(entry.DomainEventType, out entries) == false ||
                                (_entries.TryGetValue(entry.DomainEventType, out entries) && !entries.Contains(entry)));
            }
        }
        public void Add(IDomainEventEntry entry)
        {
            List <IDomainEventEntry> domainEventEntries;

            if (_entries.TryGetValue(entry.DomainEventType, out domainEventEntries))
            {
                Contract.Assume(domainEventEntries != null);

                domainEventEntries.Add(entry);
            }
            else
            {
                _entries.Add(entry.DomainEventType, new List <IDomainEventEntry> {
                    entry
                });
            }
        }
        public void Remove(IDomainEventEntry entry)
        {
            Contract.Requires(entry != null);

            throw new NotImplementedException();
        }