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())); } }