Skip to content

Using multiple constructors in the aggregate #194

Open
@mehdihadeli

Description

@mehdihadeli

Hi Oskar,
I have a question about this private constructor in th Order.

    private Order(Guid id, Guid clientId, IReadOnlyList<PricedProductItem> productItems, decimal totalPrice)
    {
        var @event = OrderInitialized.Create(
            id,
            clientId,
            productItems,
            totalPrice,
            DateTime.UtcNow
        );

        Enqueue(@event);
        Apply(@event);
    }

Why do you need this constructor? We can just call this functionality inner Initialize static method, like below code and remove this parameters constructor:

    public static Order Initialize(
        Guid orderId,
        Guid clientId,
        IReadOnlyList<PricedProductItem> productItems,
        decimal totalPrice)
    {
        var order = new Order();

        var @event = OrderInitialized.Create(
            id,
            clientId,
            productItems,
            totalPrice,
            DateTime.UtcNow
        );

        order.Enqueue(@event);
        order.Apply(@event);

        return order;
    }

It is less code :D

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions