From 5c61ad424a7c0f50690f73235d695bad2c525634 Mon Sep 17 00:00:00 2001 From: "MSDN.WhiteKnight" <35516665+MSDN-WhiteKnight@users.noreply.github.com> Date: Mon, 31 Oct 2022 02:22:04 +0500 Subject: [PATCH] Add package readme for Microsoft.Extensions.Configuration.Binder (#77649) --- .../README.md | 91 +++++++++++++++++++ ...oft.Extensions.Configuration.Binder.csproj | 4 +- 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 src/libraries/Microsoft.Extensions.Configuration.Binder/README.md diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/README.md b/src/libraries/Microsoft.Extensions.Configuration.Binder/README.md new file mode 100644 index 0000000000000..3bd8e9baab932 --- /dev/null +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/README.md @@ -0,0 +1,91 @@ +# Microsoft.Extensions.Configuration.Binder + +Provides the functionality to bind an object to data in configuration providers for [Microsoft.Extensions.Configuration](https://www.nuget.org/packages/Microsoft.Extensions.Configuration/). This package enables you to represent the configuration data as strongly-typed classes defined in the application code. To bind a configuration, use the [Microsoft.Extensions.Configuration.ConfigurationBinder.Get](https://learn.microsoft.com/dotnet/api/microsoft.extensions.configuration.configurationbinder.get) extension method on the `IConfiguration` object. To use this package, you also need to install a package for the [configuration provider](https://learn.microsoft.com/dotnet/core/extensions/configuration#configuration-providers), for example, [Microsoft.Extensions.Configuration.Json](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Json/) for the JSON provider. + +Documentation can be found at https://learn.microsoft.com/dotnet/core/extensions/configuration + +## Contribution Bar +- [x] [We consider new features, new APIs, bug fixes, and performance changes](../../libraries/README.md#primary-bar) + +The APIs and functionality are mature, but do get extended occasionally. + +## Deployment +[Microsoft.Extensions.Configuration.Binder](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Binder/) is included in the ASP.NET Core shared framework. The package is deployed as out-of-band (OOB) too and can be referenced into projects directly. + +## Example +The following example shows how to bind a JSON configuration section to .NET objects. + +```cs +using System; +using Microsoft.Extensions.Configuration; + +class Settings +{ + public string Server { get; set; } + public string Database { get; set; } + public Endpoint[] Endpoints { get; set; } +} + +class Endpoint +{ + public string IPAddress { get; set; } + public int Port { get; set; } +} + +class Program +{ + static void Main() + { + // Build a configuration object from JSON file + IConfiguration config = new ConfigurationBuilder() + .AddJsonFile("appsettings.json") + .Build(); + + // Bind a configuration section to an instance of Settings class + Settings settings = config.GetSection("Settings").Get(); + + // Read simple values + Console.WriteLine($"Server: {settings.Server}"); + Console.WriteLine($"Database: {settings.Database}"); + + // Read nested objects + Console.WriteLine("Endpoints: "); + + foreach (Endpoint endpoint in settings.Endpoints) + { + Console.WriteLine($"{endpoint.IPAddress}:{endpoint.Port}"); + } + } +} +``` + +To run this example, include an `appsettings.json` file with the following content in your project: + +```json +{ + "Settings": { + "Server": "example.com", + "Database": "Northwind", + "Endpoints": [ + { + "IPAddress": "192.168.0.1", + "Port": "80" + }, + { + "IPAddress": "192.168.10.1", + "Port": "8080" + } + ] + } +} +``` + +You can include a configuration file using a code like this in your `.csproj` file: + +```xml + + + Always + + +``` diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/src/Microsoft.Extensions.Configuration.Binder.csproj b/src/libraries/Microsoft.Extensions.Configuration.Binder/src/Microsoft.Extensions.Configuration.Binder.csproj index f5517f57f23c6..5cc70b4332628 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/src/Microsoft.Extensions.Configuration.Binder.csproj +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/src/Microsoft.Extensions.Configuration.Binder.csproj @@ -5,13 +5,15 @@ true true true - Functionality to bind an object to data in configuration providers for Microsoft.Extensions.Configuration. + Provides the functionality to bind an object to data in configuration providers for Microsoft.Extensions.Configuration. This package enables you to represent the configuration data as strongly-typed classes defined in the application code. To bind a configuration, use the Microsoft.Extensions.Configuration.ConfigurationBinder.Get extension method on the IConfiguration object. To use this package, you also need to install a package for the configuration provider, for example, Microsoft.Extensions.Configuration.Json for the JSON provider. + README.md +