Microsoft.Extensions.Primitives 11.0.0-preview.7.26381.103

About

Microsoft.Extensions.Primitives contains isolated types that are used in many places within console or ASP.NET Core applications using framework extensions.

Key Features

  • IChangeToken: An interface that represents a token that can notify when a change occurs. This can be used to trigger actions or invalidate caches when something changes. For example, the configuration and file providers libraries use this interface to reload settings or files when they are modified.
  • StringValues: A struct that represents a single string or an array of strings. This can be used to efficiently store and manipulate multiple values that are logically a single value. For example, the HTTP headers and query strings libraries use this struct to handle multiple values for the same key.
  • StringSegment: A struct that represents a substring of another string. This can be used to avoid allocating new strings when performing operations on parts of a string. For example, the configuration and logging libraries use this struct to parse and format strings.

How to Use

IChangeToken with configuration example

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Primitives;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Create a configuration builder
        var configurationBuilder = new ConfigurationBuilder()
            .SetBasePath(Environment.CurrentDirectory)
            // appsettings.json expected to have the following contents:
            // {
            //   "SomeKey": "SomeValue"
            // }
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);

        // Build the configuration
        IConfiguration configuration = configurationBuilder.Build();

        // Create a change token for the configuration
        IChangeToken changeToken = configuration.GetReloadToken();

        // Attach a change callback
        IDisposable changeTokenRegistration = changeToken.RegisterChangeCallback(state =>
        {
            Console.WriteLine("Configuration changed!");
            IConfigurationRoot root = (IConfigurationRoot)state;
            var someValue = root["SomeKey"]; // Access the updated configuration value
            Console.WriteLine($"New value of SomeKey: {someValue}");
        }, configuration);

        // go and update the value of the key SomeKey in appsettings.json.
        // The change callback will be invoked when the file is saved.
        Console.WriteLine("Listening for configuration changes. Press any key to exit.");
        Console.ReadKey();

        // Clean up the change token registration when no longer needed
        changeTokenRegistration.Dispose();
    }
}

StringValues example

using System;
using Microsoft.Extensions.Primitives;

namespace StringValuesSample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a StringValues object from a single string or an array of strings
            StringValues single = "Hello";
            StringValues multiple = new string[] { "Hello", "World" };

            // Use the implicit conversion to string or the ToString method to get the values
            Console.WriteLine($"Single: {single}"); // Single: Hello
            Console.WriteLine($"Multiple: {multiple}"); // Multiple: Hello,World

            // Use the indexer, the Count property, and the IsNullOrEmpty method to access the values
            Console.WriteLine($"Multiple[1]: {multiple[1]}"); // Multiple[1]: World
            Console.WriteLine($"Single.Count: {single.Count}"); // Single.Count: 1
            Console.WriteLine($"Multiple.IsNullOrEmpty: {StringValues.IsNullOrEmpty(multiple)}"); // Multiple.IsNullOrEmpty: False

            // Use the Equals method or the == operator to compare two StringValues objects
            Console.WriteLine($"single == \"Hello\": {single == "Hello"}"); // single == "Hello": True
            Console.WriteLine($"multiple == \"Hello\": {multiple == "Hello"}"); // multiple == "Hello": False
       }
    }
}

Main Types

The main types provided by this library are:

  • IChangeToken
  • StringValues
  • StringSegment

Additional Documentation

Feedback & Contributing

Microsoft.Extensions.Primitives is released as open source under the MIT license. Bug reports and contributions are welcome at the GitHub repository.

Showing the top 20 packages that depend on Microsoft.Extensions.Primitives.

Packages Downloads
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
273
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
322
Microsoft.Extensions.Configuration.Abstractions
Abstractions of key-value pair based configuration. Commonly used types: Microsoft.Extensions.Configuration.IConfiguration Microsoft.Extensions.Configuration.IConfigurationBuilder Microsoft.Extensions.Configuration.IConfigurationProvider Microsoft.Extensions.Configuration.IConfigurationRoot Microsoft.Extensions.Configuration.IConfigurationSection
273
Microsoft.Extensions.Configuration.Abstractions
Abstractions of key-value pair based configuration. Commonly used types: Microsoft.Extensions.Configuration.IConfiguration Microsoft.Extensions.Configuration.IConfigurationBuilder Microsoft.Extensions.Configuration.IConfigurationProvider Microsoft.Extensions.Configuration.IConfigurationRoot Microsoft.Extensions.Configuration.IConfigurationSection
440
Microsoft.Extensions.Configuration.Abstractions
Abstractions of key-value pair based configuration. Commonly used types: Microsoft.Extensions.Configuration.IConfiguration Microsoft.Extensions.Configuration.IConfigurationBuilder Microsoft.Extensions.Configuration.IConfigurationProvider Microsoft.Extensions.Configuration.IConfigurationRoot Microsoft.Extensions.Configuration.IConfigurationSection
542
Microsoft.Extensions.Configuration.Abstractions
Abstractions of key-value pair based configuration. Commonly Used Types: Microsoft.Extensions.Configuration.IConfiguration Microsoft.Extensions.Configuration.IConfigurationBuilder Microsoft.Extensions.Configuration.IConfigurationProvider Microsoft.Extensions.Configuration.IConfigurationRoot Microsoft.Extensions.Configuration.IConfigurationSection
276
Microsoft.Extensions.Configuration.Abstractions
Abstractions of key-value pair based configuration. Commonly Used Types: Microsoft.Extensions.Configuration.IConfiguration Microsoft.Extensions.Configuration.IConfigurationBuilder Microsoft.Extensions.Configuration.IConfigurationProvider Microsoft.Extensions.Configuration.IConfigurationRoot Microsoft.Extensions.Configuration.IConfigurationSection
358
Microsoft.Extensions.Configuration.Abstractions
Provides abstractions of key-value pair based configuration. Interfaces defined in this package are implemented by classes in Microsoft.Extensions.Configuration and other configuration packages.
317
Microsoft.Extensions.Configuration.Abstractions
Provides abstractions of key-value pair based configuration. Interfaces defined in this package are implemented by classes in Microsoft.Extensions.Configuration and other configuration packages.
453
Microsoft.Extensions.FileProviders.Abstractions
Abstractions of files and directories. Commonly used types: Microsoft.Extensions.FileProviders.IDirectoryContents Microsoft.Extensions.FileProviders.IFileInfo Microsoft.Extensions.FileProviders.IFileProvider
288
Microsoft.Extensions.FileProviders.Abstractions
Abstractions of files and directories. Commonly used types: Microsoft.Extensions.FileProviders.IDirectoryContents Microsoft.Extensions.FileProviders.IFileInfo Microsoft.Extensions.FileProviders.IFileProvider
467
Microsoft.Extensions.FileProviders.Abstractions
Abstractions of files and directories. Commonly Used Types: Microsoft.Extensions.FileProviders.IDirectoryContents Microsoft.Extensions.FileProviders.IFileInfo Microsoft.Extensions.FileProviders.IFileProvider
292
Microsoft.Extensions.FileProviders.Abstractions
Abstractions of files and directories. Commonly Used Types: Microsoft.Extensions.FileProviders.IDirectoryContents Microsoft.Extensions.FileProviders.IFileInfo Microsoft.Extensions.FileProviders.IFileProvider
438
Microsoft.Extensions.Options
Provides a strongly typed way of specifying and accessing settings using dependency injection.
296
Microsoft.Extensions.Options
Provides a strongly typed way of specifying and accessing settings using dependency injection.
346
Microsoft.Extensions.Options
Provides a strongly typed way of specifying and accessing settings using dependency injection.
439
Microsoft.Extensions.Options
Provides a strongly typed way of specifying and accessing settings using dependency injection.
468
Microsoft.Extensions.Options
Provides a strongly typed way of specifying and accessing settings using dependency injection.
530
Microsoft.Extensions.Options
Provides a strongly typed way of specifying and accessing settings using dependency injection.
536
Microsoft.Extensions.Options.ConfigurationExtensions
Provides additional configuration specific functionality related to Options.
281

https://go.microsoft.com/fwlink/?LinkID=799421

.NET 10.0

  • No dependencies.

.NET 11.0

  • No dependencies.

.NET Framework 4.6.2

.NET Standard 2.0

Version Downloads Last updated
11.0.0-preview.7.26381.103 3 08/11/2026
11.0.0-preview.6.26359.118 16 07/16/2026
11.0.0-preview.5.26302.115 24 06/09/2026
11.0.0-preview.4.26230.115 35 05/13/2026
11.0.0-preview.3.26207.106 39 04/14/2026
11.0.0-preview.2.26159.112 43 03/12/2026
11.0.0-preview.1.26104.118 43 02/12/2026
10.0.11 3 08/11/2026
10.0.10 14 07/16/2026
10.0.9 23 06/09/2026
10.0.8 23 05/13/2026
10.0.7 40 04/21/2026
10.0.6 39 04/14/2026
10.0.5 41 03/13/2026
10.0.4 39 03/12/2026
10.0.3 43 02/12/2026
10.0.2 66 01/13/2026
10.0.1 75 12/11/2025
10.0.0 104 11/16/2025
10.0.0-rc.2.25502.107 108 10/15/2025
10.0.0-rc.1.25451.107 113 09/09/2025
10.0.0-preview.7.25380.108 119 08/13/2025
10.0.0-preview.6.25358.103 194 07/17/2025
10.0.0-preview.5.25277.114 124 06/07/2025
10.0.0-preview.4.25258.110 151 05/16/2025
10.0.0-preview.3.25171.5 131 04/13/2025
10.0.0-preview.2.25163.2 140 03/31/2025
10.0.0-preview.1.25080.5 120 03/31/2025
9.0.19 3 08/12/2026
9.0.18 16 07/16/2026
9.0.17 22 06/09/2026
9.0.16 31 05/13/2026
9.0.15 37 04/14/2026
9.0.14 39 03/12/2026
9.0.13 46 02/12/2026
9.0.12 46 01/13/2026
9.0.11 89 11/16/2025
9.0.10 124 10/15/2025
9.0.9 91 09/09/2025
9.0.8 155 08/05/2025
9.0.7 172 07/09/2025
9.0.6 110 06/12/2025
9.0.5 133 05/17/2025
9.0.4 118 04/09/2025
9.0.3 159 03/25/2025
9.0.2 226 02/14/2025
9.0.1 141 02/11/2025
9.0.0 327 11/14/2024
9.0.0-rc.2.24473.5 123 10/17/2024
9.0.0-rc.1.24431.7 122 10/28/2024
9.0.0-preview.7.24405.7 133 08/18/2024
9.0.0-preview.6.24327.7 149 07/22/2024
9.0.0-preview.5.24306.7 160 06/24/2024
9.0.0-preview.4.24266.19 153 07/22/2024
9.0.0-preview.3.24172.9 161 07/22/2024
9.0.0-preview.2.24128.5 144 07/22/2024
9.0.0-preview.1.24080.9 189 07/22/2024
8.0.0 578 02/04/2024
8.0.0-rc.2.23479.6 140 07/22/2024
8.0.0-rc.1.23419.4 149 07/22/2024
8.0.0-preview.7.23375.6 127 07/22/2024
8.0.0-preview.6.23329.7 153 07/22/2024
8.0.0-preview.5.23280.8 151 07/22/2024
8.0.0-preview.4.23259.5 154 07/22/2024
8.0.0-preview.3.23174.8 177 07/22/2024
8.0.0-preview.2.23128.3 167 07/22/2024
8.0.0-preview.1.23110.8 165 07/22/2024
7.0.0 481 02/04/2024
7.0.0-rc.2.22472.3 138 07/22/2024
7.0.0-rc.1.22426.10 162 07/22/2024
7.0.0-preview.7.22375.6 134 07/22/2024
7.0.0-preview.6.22324.4 145 07/22/2024
7.0.0-preview.5.22301.12 148 07/22/2024
7.0.0-preview.4.22229.4 141 07/22/2024
7.0.0-preview.3.22175.4 152 07/22/2024
7.0.0-preview.2.22152.2 158 07/22/2024
7.0.0-preview.1.22076.8 151 07/22/2024
6.0.2-mauipre.1.22102.15 88 08/18/2025
6.0.2-mauipre.1.22054.8 126 04/06/2025
6.0.1 125 11/14/2024
6.0.0 366 02/04/2024
6.0.0-rc.2.21480.5 160 07/22/2024
6.0.0-rc.1.21451.13 157 07/22/2024
6.0.0-preview.7.21377.19 174 07/22/2024
6.0.0-preview.6.21352.12 160 07/22/2024
6.0.0-preview.5.21301.5 169 07/22/2024
6.0.0-preview.4.21253.7 141 07/22/2024
6.0.0-preview.3.21201.4 150 07/22/2024
6.0.0-preview.2.21154.6 157 07/22/2024
6.0.0-preview.1.21102.12 157 07/22/2024
5.0.1 142 07/22/2024
5.0.0 308 02/04/2024
5.0.0-rc.2.20475.5 143 07/22/2024
5.0.0-rc.1.20451.14 143 07/22/2024
5.0.0-preview.8.20407.11 149 07/22/2024
5.0.0-preview.7.20364.11 135 07/22/2024
5.0.0-preview.6.20305.6 168 07/22/2024
5.0.0-preview.5.20278.1 157 07/22/2024
5.0.0-preview.4.20251.6 146 07/22/2024
5.0.0-preview.3.20215.2 153 07/22/2024
5.0.0-preview.2.20160.3 144 07/22/2024
5.0.0-preview.1.20120.4 148 07/22/2024
3.1.32 163 07/22/2024
3.1.31 150 07/22/2024
3.1.30 152 07/22/2024
3.1.29 164 07/22/2024
3.1.28 146 07/22/2024
3.1.27 149 07/22/2024
3.1.26 164 07/22/2024
3.1.25 154 07/22/2024
3.1.24 146 07/22/2024
3.1.23 157 07/22/2024
3.1.22 136 07/22/2024
3.1.21 159 07/22/2024
3.1.20 160 07/22/2024
3.1.19 142 07/22/2024
3.1.18 564 02/04/2024
3.1.17 171 07/22/2024
3.1.16 126 07/22/2024
3.1.15 155 07/22/2024
3.1.14 151 07/22/2024
3.1.13 161 07/22/2024
3.1.12 156 07/22/2024
3.1.11 154 07/22/2024
3.1.10 146 07/22/2024
3.1.9 162 07/22/2024
3.1.8 245 02/04/2024
3.1.7 143 07/22/2024
3.1.6 156 07/22/2024
3.1.5 130 07/22/2024
3.1.4 137 07/22/2024
3.1.3 148 07/22/2024
3.1.2 161 07/22/2024
3.1.1 154 07/22/2024
3.1.0 152 07/22/2024
3.1.0-preview3.19553.2 161 07/22/2024
3.1.0-preview2.19525.4 150 07/22/2024
3.1.0-preview1.19506.1 153 07/22/2024
3.0.3 163 07/22/2024
3.0.2 170 07/22/2024
3.0.1 159 07/22/2024
3.0.0 145 07/22/2024
3.0.0-rc1.19456.10 139 07/22/2024
3.0.0-preview9.19423.4 155 07/22/2024
3.0.0-preview8.19405.4 155 07/22/2024
3.0.0-preview7.19362.4 142 07/22/2024
3.0.0-preview6.19304.6 144 07/22/2024
3.0.0-preview5.19227.9 141 07/22/2024
3.0.0-preview4.19216.2 151 07/22/2024
3.0.0-preview3.19153.1 159 07/22/2024
3.0.0-preview.19074.2 151 07/22/2024
3.0.0-preview.18572.1 153 07/22/2024
2.2.0 249 02/05/2024
2.2.0-preview3-35497 141 07/22/2024
2.2.0-preview2-35157 151 07/22/2024
2.2.0-preview1-35029 147 07/22/2024
2.1.6 162 07/22/2024
2.1.1 155 07/22/2024
2.1.0 153 07/22/2024
2.1.0-rc1-final 155 07/22/2024
2.1.0-preview2-final 143 07/22/2024
2.1.0-preview1-final 147 07/22/2024
2.0.0 429 02/04/2024
2.0.0-preview2-final 137 07/22/2024
2.0.0-preview1-final 139 07/22/2024
1.1.1 147 07/22/2024
1.1.0 155 07/22/2024
1.1.0-preview1-final 150 07/22/2024
1.0.1 224 07/22/2024
1.0.0 169 07/22/2024
1.0.0-rc2-final 143 07/22/2024
1.0.0-rc1-final 150 07/22/2024