Exemple #1
0
 private static void BuildDomainEventPublisher(ITypeModelRegistry registry, BodyBuilder builder, Aggregate aggregate, ClassModel @class, ClassModel domainEvent, List <MethodParameter> parameters)
 {
     if (aggregate.UniqueIdentifier != null)
     {
         if (aggregate.UniqueIdentifier.Type.Resolve(registry) != SystemTypes.Guid)
         {
             builder.InvokeMethod(
                 SystemTypes.DomainEventPublishMethodName,
                 domainEvent.Construct(
                     parameters.ToExpressions(),
                     domainEvent.Initializer(SystemTypes.DomainEventAggregateRootIdentifierName, @class.GetMethod("ToGuid").Invoke(parameters.First().Expression)))
                 );
         }
         else
         {
             builder.InvokeMethod(
                 SystemTypes.DomainEventPublishMethodName,
                 domainEvent.Construct(
                     parameters.ToExpressions(),
                     domainEvent.Initializer(SystemTypes.DomainEventAggregateRootIdentifierName, parameters.First().Expression))
                 );
         }
     }
     else
     {
         builder.InvokeMethod(SystemTypes.DomainEventPublishMethodName, domainEvent.Construct(parameters.ToExpressions().ToArray()));
     }
 }