Upgrade to .NET 9 and error criticality level support
Changes:
- Update to .NET 9
- CriticalityLevel added to [ErrorDescription], also added to metric label, logs, api response. So you can use it to differ codes by its error criticality level.
- DomainException that generated by source generators now uses FrozenDictionary for internal error codes cache
BREAKING CHANGES:
- Serilog dependency upgraded to 4.1.0
- OpenTelemetry.Api dependency upgraded to 1.10.0
- No more replace Microsoft.AspNetCore.Http.DefaultProblemDetailsWriter by Rfc7231ProblemDetailsWriter. Bug dotnet/aspnetcore#52577 was fixed
- Dropped support of any .NET lower than .NET 9
- Dropped field "IsObsolete" on [ErrorDescription]
- ErrorCodesMeter now accept ErrorDescription and instance of error, instead of DomainException. This helps to use not only exceptions, but also Result pattern.
- error_codes_total metric now has level label from error code
- DomainExceptionSettings.OnExceptionCreated replaced by DomainExceptionSettings.OnErrorCreated callback