public ApplyMethodCall(Type handlerType, MethodSlot slot) : base(handlerType, slot.Method) { EventType = slot.EventType; if (slot.Setter != null) { Target = slot.Setter; } }
public CreateAggregateFrame(Type handlerType, MethodSlot slot) : base(handlerType, slot.Method) { ReturnAction = ReturnAction.Return; EventType = slot.EventType; if (slot.Setter != null) { Target = slot.Setter; } }
public void AddLambda <T>(T lambda, Type eventType) { if (eventType == null) { throw new ArgumentNullException(nameof(eventType)); } var name = LambdaName + (++_lambdaNumber).ToString(); var method = lambda.GetType().GetMethod("Invoke"); var setter = new Setter(typeof(T), name) { InitialValue = lambda }; var slot = new MethodSlot(setter, method, eventType); Methods.Add(slot); if (method.IsAsync()) { IsAsync = true; } }
public override IEventHandlingFrame CreateEventTypeHandler(Type aggregateType, DocumentMapping aggregateMapping, MethodSlot slot) { return(new ApplyMethodCall(ProjectionType, slot)); }
public MaybeDeleteFrame(Type projectionType, Type aggregateType, Type identityType, MethodSlot slot) : base(slot.Method.IsAsync()) { _aggregateType = aggregateType; _identityType = identityType; EventType = slot.EventType; Maybe = new MethodCall(projectionType, slot.Method) { Target = slot.Setter }; }
public abstract IEventHandlingFrame CreateEventTypeHandler(Type aggregateType, DocumentMapping aggregateMapping, MethodSlot slot);
public override IEventHandlingFrame CreateEventTypeHandler(Type aggregateType, DocumentMapping aggregateMapping, MethodSlot slot) { return(new MaybeDeleteFrame(ProjectionType, aggregateType, aggregateMapping.IdType, slot)); }