public CreateCurrencyCommandHandler(
     ICurrencyRepository currencyRepository,
     IMessagePublisher messagePublisher,
     IDomainEventConverter domainEventConverter)
     : base(messagePublisher, domainEventConverter)
 {
     _currencyRepository = currencyRepository;
 }
 protected DomainEventAwareCommandHandler(
     IMessagePublisher messagePublisher,
     IDomainEventConverter domainEventConverter)
 {
     this.MessagePublisher     = messagePublisher ?? throw new ArgumentNullException(nameof(messagePublisher));
     this.DomainEventConverter =
         domainEventConverter ?? throw new ArgumentNullException(nameof(domainEventConverter));
 }
Beispiel #3
0
        public void AddNestedConverter(IDomainEventConverter nestedConverter)
        {
            if (nestedConverter == null)
            {
                throw new ArgumentNullException(nameof(nestedConverter));
            }

            try
            {
                var baseType =
                    nestedConverter.GetType().BaseType ??
                    throw new ArgumentException("Base type is null.", nameof(nestedConverter));

                var isConstructedGenericType = baseType.IsConstructedGenericType;
                if (!isConstructedGenericType)
                {
                    throw new ArgumentException("Base type is not a constructed generic type.", nameof(nestedConverter));
                }

                var genericTypeDefinition = baseType.GetGenericTypeDefinition();
                if (genericTypeDefinition != typeof(DomainEventConverterBase <,>))
                {
                    throw new ArgumentException("Wrong base type's generic type definition", nameof(nestedConverter));
                }

                var domainEventType = baseType.GetGenericArguments().First();
                if (_nestedConverters.ContainsKey(domainEventType))
                {
                    throw new InvalidOperationException($"There is already a converter registered for the domain type '{domainEventType.FullName}'.");
                }

                _nestedConverters.Add(domainEventType, nestedConverter);
            }
            catch (ArgumentException ex)
            {
                throw new ArgumentException("Nested converter must be inherited from 'DomainEventConverterBase<YourDomainEvent, YourMessage>'.", nameof(nestedConverter), ex);
            }
        }