Fix C# 14 breaking change: Replace params ReadOnlySpan with params arrays #627
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.



Problem
This PR addresses a breaking change introduced in C# 14 (part of .NET 10) related to first-class spans. The issue affects code using
params ReadOnlySpan<T>parameters when working with MongoDB's BSON serializer.With C# 14's first-class spans feature,
ReadOnlySpan<T>parameters become fully supported language constructs. However, spans are stack-allocated types that cannot be serialized. When the MongoDB driver attempts to serialize methods withparams ReadOnlySpan<T>parameters, it throws:See the .NET Runtime issue and MongoDB JIRA CSHARP-5749 for more details.
Solution
This PR replaces
params ReadOnlySpan<T>withparams T[]in two methods:params ReadOnlySpan<Type>toparams Type[]params ReadOnlySpan<string>toparams string[]Why This Works
Example
Existing code continues to work unchanged:
Testing
Fixes compatibility with .NET 10 and prepares the codebase for C# 14.
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
ccsca2021.crl.certum.pldotnet build GrandNode.sln --configuration Release(dns block)ccsca2021.ocsp-certum.comdotnet build GrandNode.sln --configuration Release(dns block)crl.certum.pldotnet build GrandNode.sln --configuration Release(dns block)subca.ocsp-certum.comdotnet build GrandNode.sln --configuration Release(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
Fixes #624
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.