Skip to content

Add polyfills and centralize null checks#489

Open
ChrisPulman wants to merge 3 commits intomainfrom
UpdateReactiveUI
Open

Add polyfills and centralize null checks#489
ChrisPulman wants to merge 3 commits intomainfrom
UpdateReactiveUI

Conversation

@ChrisPulman
Copy link
Copy Markdown
Member

What kind of change does this PR introduce?

Update

What is the new behavior?

Introduce argument validation helper and multiple polyfills to improve compatibility across .NET targets.

Added ArgumentExceptionHelper to centralize ThrowIfNull/ThrowIfNullOrEmpty usage and replaced platform-specific guards in FusilladeSplatBuilderExtensions, NetCache, RateLimitedHttpMessageHandler, and other places to use the helper.

Add polyfill types (CallerArgumentExpressionAttribute, HashCode for .NET Framework, IsExternalInit, NotNullAttribute, RequiresDynamicCodeAttribute, RequiresUnreferencedCodeAttribute) under src/Fusillade/Polyfills to provide missing APIs on older runtimes or forward to framework types when available.

Also update copyright headers and stylecop.json copyright range to 2016 - 2026.

Use ArgumentNullException.ThrowIfNull on .NET 8 builds while keeping explicit null-checks for older frameworks across FusilladeSplatBuilderExtensions, NetCache, and RateLimitedHttpMessageHandler to standardize parameter validation. Bump ReactiveUI and ReactiveUI.Testing to 23.1.1 and adjust a test to use RxSchedulers.TaskpoolScheduler (HttpSchedulerSharedTests). Modified files: Directory.Packages.props, Fusillade.Tests/Http/HttpSchedulerSharedTests.cs, Fusillade/Builder/FusilladeSplatBuilderExtensions.cs, Fusillade/NetCache.cs, Fusillade/RateLimitedHttpMessageHandler.cs.
Introduce argument validation helper and multiple polyfills to improve compatibility across .NET targets. Added ArgumentExceptionHelper to centralize ThrowIfNull/ThrowIfNullOrEmpty usage and replaced platform-specific guards in FusilladeSplatBuilderExtensions, NetCache, RateLimitedHttpMessageHandler, and other places to use the helper. Add polyfill types (CallerArgumentExpressionAttribute, HashCode for .NET Framework, IsExternalInit, NotNullAttribute, RequiresDynamicCodeAttribute, RequiresUnreferencedCodeAttribute) under src/Fusillade/Polyfills to provide missing APIs on older runtimes or forward to framework types when available. Also update copyright headers and stylecop.json copyright range to 2016 - 2026.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant