System.Memory.Data 8.0.0

The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org. Prefix Reserved
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package System.Memory.Data --version 8.0.0
NuGet\Install-Package System.Memory.Data -Version 8.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="System.Memory.Data" Version="8.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add System.Memory.Data --version 8.0.0
#r "nuget: System.Memory.Data, 8.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install System.Memory.Data as a Cake Addin
#addin nuget:?package=System.Memory.Data&version=8.0.0

// Install System.Memory.Data as a Cake Tool
#tool nuget:?package=System.Memory.Data&version=8.0.0

About

System.Memory.Data introduces the BinaryData type, a lightweight abstraction for a byte payload. It makes it easy to convert between string, bytes, and stream.

This abstraction can simplify the API surface by exposing a single type instead of numerous overloads or properties. The BinaryData type handles data ownership efficiently, wrapping passed-in bytes when using byte[] or ReadOnlyMemory<byte> constructors or methods, and managing data as bytes when dealing with streams, strings, or rich model types serialized as JSON.

Key Features

  • Lightweight abstraction for byte payload via BinaryData type.
  • Convenient helper methods for common conversions among string, bytes, and stream.
  • Efficient data ownership handling.

How to Use

To/From String:

var data = new BinaryData("some data");

// ToString will decode the bytes using UTF-8
Console.WriteLine(data.ToString()); // prints "some data"

To/From Bytes:

byte[] bytes = Encoding.UTF8.GetBytes("some data");

// Create BinaryData using a constructor ...
BinaryData data = new BinaryData(bytes);

// Or using a static factory method.
data = BinaryData.FromBytes(bytes);

// There is an implicit cast defined for ReadOnlyMemory<byte>
ReadOnlyMemory<byte> rom = data;

// There is also an implicit cast defined for ReadOnlySpan<byte>
ReadOnlySpan<byte> ros = data;

// there is also a ToMemory method that gives access to the ReadOnlyMemory.
rom = data.ToMemory();

// and a ToArray method that converts into a byte array.
byte[] array = data.ToArray();

To/From stream:

var bytes = Encoding.UTF8.GetBytes("some data");
Stream stream = new MemoryStream(bytes);
var data = BinaryData.FromStream(stream);

// Calling ToStream will give back a stream that is backed by ReadOnlyMemory, so it is not writable.
stream = data.ToStream();
Console.WriteLine(stream.CanWrite); // prints false

BinaryData also can be used to integrate with ObjectSerializer. By default, the JsonObjectSerializer will be used, but any serializer deriving from ObjectSerializer can be used.

var model = new CustomModel
{
    A = "some text",
    B = 5,
    C = true
};

var data = BinaryData.FromObjectAsJson(model);
model = data.ToObjectFromJson<CustomModel>();

Main Types

The main types provided by this library are:

  • System.BinaryData

Additional Documentation

Feedback & Contributing

System.Memory.Data is released as open source under the MIT license. Bug reports and contributions are welcome at the GitHub repository.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 is compatible.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (82)

Showing the top 5 NuGet packages that depend on System.Memory.Data:

Package Downloads
Azure.Core The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

This is the implementation of the Azure Client Pipeline

Microsoft.Azure.WebJobs.Core The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

This library simplifies the task of adding background processing to your Microsoft Azure Web Sites. The SDK uses Microsoft Azure Storage, triggering a function in your program when items are added to Queues and Blobs. A dashboard provides rich monitoring and diagnostics for the programs that you write by using the SDK. For more information, please visit http://go.microsoft.com/fwlink/?LinkID=320971

Microsoft.Azure.WebJobs The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

This package contains the runtime assemblies for Microsoft.Azure.WebJobs.Host. It also adds rich diagnostics capabilities which makes it easier to monitor the WebJobs in the dashboard. For more information, please visit http://go.microsoft.com/fwlink/?LinkID=320971

Azure.Messaging.ServiceBus The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

Azure Service Bus is a fully managed enterprise integration message broker. Service Bus can decouple applications and services. Service Bus offers a reliable and secure platform for asynchronous transfer of data and state. This client library allows for both sending and receiving messages using Azure Service Bus. For more information about Service Bus, see https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview

Azure.Core.Amqp The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

This library contains AMQP model types used by Azure libraries.

GitHub repositories (19)

Showing the top 5 popular GitHub repositories that depend on System.Memory.Data:

Repository Stars
dotnet/orleans
Cloud Native application framework for .NET
Azure/azure-sdk-for-net
This repository is for active development of the Azure SDK for .NET. For consumers of the SDK we recommend visiting our public developer docs at https://learn.microsoft.com/dotnet/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-net.
microsoft/kernel-memory
RAG architecture: index and query any data using LLM and natural language, track sources, show citations, asynchronous memory patterns.
MarimerLLC/csla
A home for your business logic in any .NET application.
smartstore/Smartstore
A modular, scalable and ultra-fast open-source all-in-one eCommerce platform built on ASP.NET Core 7
Version Downloads Last updated
9.0.0-preview.5.24306.7 422 6/11/2024
9.0.0-preview.4.24266.19 715 5/21/2024
9.0.0-preview.3.24172.9 863 4/11/2024
9.0.0-preview.2.24128.5 1,188 3/12/2024
9.0.0-preview.1.24080.9 735 2/13/2024
8.0.0 1,778,146 11/14/2023
8.0.0-rc.2.23479.6 4,503 10/10/2023
8.0.0-rc.1.23419.4 4,734 9/12/2023
8.0.0-preview.7.23375.6 4,720 8/8/2023
8.0.0-preview.6.23329.7 3,397 7/11/2023
8.0.0-preview.5.23280.8 943 6/13/2023
8.0.0-preview.4.23259.5 647 5/16/2023
8.0.0-preview.3.23174.8 1,483 4/11/2023
8.0.0-preview.2.23128.3 783 3/14/2023
8.0.0-preview.1.23110.8 8,884 2/21/2023
7.0.0 4,004,226 11/7/2022
7.0.0-rc.2.22472.3 9,584 10/11/2022
7.0.0-rc.1.22426.10 2,251 9/14/2022
7.0.0-preview.7.22375.6 2,958 8/9/2022
7.0.0-preview.6.22324.4 675 7/12/2022
7.0.0-preview.5.22301.12 749 6/14/2022
7.0.0-preview.4.22229.4 1,772 5/10/2022
7.0.0-preview.3.22175.4 1,017 4/13/2022
7.0.0-preview.2.22152.2 682 3/14/2022
7.0.0-preview.1.22076.8 2,805 2/17/2022
6.0.0 3,831,208 11/8/2021
6.0.0-rc.2.21480.5 863 10/12/2021
6.0.0-rc.1.21451.13 1,934 9/14/2021
6.0.0-preview.7.21377.19 2,745 8/10/2021
6.0.0-preview.6.21352.12 1,674 7/14/2021
6.0.0-preview.5.21301.5 663 6/15/2021
6.0.0-preview.4.21253.7 10,566 5/24/2021
6.0.0-preview.3.21201.4 1,190 4/8/2021
6.0.0-preview.2.21154.6 885 3/11/2021
6.0.0-preview.1.21102.12 1,867 2/12/2021
1.0.2 344,808,522 4/8/2021
1.0.1 73,626,023 11/16/2020
1.0.0 2,232,534 11/4/2020
1.0.0-beta.2 430 11/4/2020
1.0.0-beta.1 482 11/3/2020