public void Handle(ISubscribedDomainEvent domainEvent, long version) { var type = domainEvent.GetType(); var currentEntityType = GetType(); var methodInfos = currentEntityType.GetMethods().Where(method => method.Name == nameof(Handle)); var methodToExecute = methodInfos.FirstOrDefault(method => method.GetParameters().FirstOrDefault()?.ParameterType == type); var parameterInfos = methodToExecute?.GetParameters().ToList(); if (methodToExecute != null && parameterInfos.Count == 1) { methodToExecute.Invoke(this, new object[] { domainEvent }); return; } if (methodToExecute != null && parameterInfos.Count == 2 && parameterInfos[1].ParameterType == typeof(long)) { methodToExecute.Invoke(this, new object[] { domainEvent, version }); } }
public DomainEventNotAssignableToEntityException(ISubscribedDomainEvent domainevent) : base($"EntityId is null, can not assign {domainevent.GetType()}, most likely the event can not be parsed correctly") { }