Convert MemoryBufferProtocolWrapper
to generic
#1906
Merged
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.
MemoryBufferProtocolWrapper
was born out of a desire to provide a seamless and efficient conversion from CLR arrays (andMemory<byte>
etc.) toIBufferProtocol
, which proliferates the public API for "bytes-like" parameters.It turns out that the wrapper class can be useful also for adapting
Memory
of other underlying unmanaged types toIBufferProtocol
, hence the change to the genericMemoryBufferProtocolWrapper<T>
. The rules in the conversion binder did not change, that is, still only byte-oriented types (byte[]
,Memory<byte>
,ReadOnlyMemory<byte>
) are eligible to be automatically converted by theConversionBinder
. However, C# code may now use the class for other conversions, therefore be able to call methods acceptingIBufferProtocol
using arrays/memory with other underlying types.