Time and Date

Time and Date Abstractions in RCommon

Having the ability to mock date/time constructs seems long overdue. .NET 8 only recently addressed the capability gap through the TimeProvider abstraction. RCommon has had the ISystemTime abstraction for many years now.

Configuration

builder.Services.AddRCommon()
    .WithDateTimeSystem(dateTime => dateTime.Kind = DateTimeKind.Utc)

Implementation

public class CreateLighthouseProfileCommandHandler : IAppRequestHandler<CreateLighthouseProfileCommand, LighthouseProfileResponse>
 {
     private readonly ISystemTime _systemTime;

     public CreateLighthouseProfileCommandHandler(ISystemTime systemTime)
     {
         _systemTime = systemTime;
     }
     public async Task<LighthouseProfileResponse> HandleAsync(CreateLighthouseProfileCommand request, CancellationToken cancellationToken)
     {
         LighthouseProfile profile = new LighthouseProfile(_systemTime.Now, request.WebsiteUrl, request.CreatedByEmail);

Last updated