Primary constructor parameters are not automatically properties
A primary constructor parameter stays a parameter. Declare a property or field when the value should be an explicit member of the type.
A primary constructor parameter stays a parameter. Declare a property or field when the value should be an explicit member of the type.
Inject TimeProvider when business logic depends on the current time, then control that time in tests.
Prefer Task unless you have a measured allocation reason and a simple consumption contract.
Treat nullable warnings as pressure to make object state and API contracts clearer.