Changing Service Behavior

A service is a class with reusable logic that will be leveraged across the system, for example, in multiple pipelines. Changing the behavior of a service means applying this behavior platform-wide.

For example, customizing the ITaxService will change how taxes are calculated for shipments, payments, products, and order lines.

All services are registered in the IoC container, so it is easy to overwrite them.

Implementing a Service

Once the service to change is identified, create a new class and either implement the interface or inherit from the existing implementation.

  • Implementing the interface requires writing a full implementation.

  • Inheriting an existing implementation allows for overriding only parts of an existing implementation, where applicable.

Implementing the Interface

 public class CustomXService: IXService
    {
        public Task<XReturn> XMethod(.., CancellationToken token)
        {
            // Custom implementation
            return xReturn;
        }
    }

Inheriting an Existing Implementation

If XService has multiple methods, and only one needs to be overridden, it can be done by inheriting the default implementation and selecting which methods to override.

It is possible to call the base method from the custom code using

"base.Xmethod(..);"

public class CustomXService: XService
    {
        public override Task<XReturn> XMethod(.., CancellationToken token)
        {
            // Custom implementation
            // Possible to call base.Xmethod(.., token) from custom code.
            return xReturn;
        }
    }

Registering the Custom Service Implementation

builder.Services.AddUcommerce(builder.Configuration)
    // ... register other Ucommerce components first
    .Build();
builder.Services.AddUnique<IXService, CustomXService>();

Last updated