Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge main into live #41837

Merged
merged 5 commits into from
Jul 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
[![GitHub pulls-opened](https://img.shields.io/github/issues-pr/dotnet/docs.svg)](https://GitHub.com/dotnet/docs/pulls?q=is%3Aissue+is%3Aopened)
[![GitHub pulls-merged](https://img.shields.io/github/issues-search/dotnet/docs?label=merged%20pull%20requests&query=is%3Apr%20is%3Aclosed%20is%3Amerged&color=darkviolet)](https://github.com/dotnet/docs/pulls?q=is%3Apr+is%3Aclosed+is%3Amerged)
[![GitHub pulls-unmerged](https://img.shields.io/github/issues-search/dotnet/docs?label=unmerged%20pull%20requests&query=is%3Apr%20is%3Aclosed%20is%3Aunmerged&color=red)](https://github.com/dotnet/docs/pulls?q=is%3Apr+is%3Aclosed+is%3Aunmerged)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9215/badge)](https://www.bestpractices.dev/projects/9215)

This repository contains the conceptual documentation for .NET. The [.NET documentation site](https://learn.microsoft.com/dotnet) is built from multiple repositories in addition to this one:

Expand Down
12 changes: 6 additions & 6 deletions docs/azure/includes/dotnet-all.md

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions docs/azure/includes/dotnet-new.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
| App Configuration | NuGet [1.4.1](https://www.nuget.org/packages/Azure.Data.AppConfiguration/1.4.1) | [docs](/dotnet/api/overview/azure/Data.AppConfiguration-readme) | GitHub [1.4.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Data.AppConfiguration_1.4.1/sdk/appconfiguration/Azure.Data.AppConfiguration/) |
| App Configuration Provider | NuGet [7.0.0](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.AzureAppConfiguration/7.0.0)<br>NuGet [7.1.0-preview](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.AzureAppConfiguration/7.1.0-preview) | | GitHub [7.0.0](https://github.com/Azure/AppConfiguration-DotnetProvider) |
| Attestation | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Security.Attestation/1.0.0) | [docs](/dotnet/api/overview/azure/Security.Attestation-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.Attestation_1.0.0/sdk/attestation/Azure.Security.Attestation/) |
| Azure AI Search | NuGet [11.5.1](https://www.nuget.org/packages/Azure.Search.Documents/11.5.1)<br>NuGet [11.6.0-beta.4](https://www.nuget.org/packages/Azure.Search.Documents/11.6.0-beta.4) | [docs](/dotnet/api/overview/azure/Search.Documents-readme) | GitHub [11.5.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Search.Documents_11.5.1/sdk/search/Azure.Search.Documents/)<br>GitHub [11.6.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Search.Documents_11.6.0-beta.4/sdk/search/Azure.Search.Documents/) |
| Azure AI Search | NuGet [11.6.0](https://www.nuget.org/packages/Azure.Search.Documents/11.6.0) | [docs](/dotnet/api/overview/azure/Search.Documents-readme) | GitHub [11.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Search.Documents_11.6.0/sdk/search/Azure.Search.Documents/) |
| Azure Object Anchors Conversion | NuGet [0.3.0-beta.6](https://www.nuget.org/packages/Azure.MixedReality.ObjectAnchors.Conversion/0.3.0-beta.6) | [docs](/dotnet/api/overview/azure/MixedReality.ObjectAnchors.Conversion-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [0.3.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.MixedReality.ObjectAnchors.Conversion_0.3.0-beta.6/sdk/objectanchors/Azure.MixedReality.ObjectAnchors.Conversion/) |
| Azure Remote Rendering | NuGet [1.1.0](https://www.nuget.org/packages/Azure.MixedReality.RemoteRendering/1.1.0) | [docs](/dotnet/api/overview/azure/MixedReality.RemoteRendering-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.MixedReality.RemoteRendering_1.1.0/sdk/remoterendering/Azure.MixedReality.RemoteRendering/) |
| Code Transparency | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.Security.CodeTransparency/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/Security.CodeTransparency-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.CodeTransparency_1.0.0-beta.2/sdk/confidentialledger/Azure.Security.CodeTransparency/) |
Expand Down Expand Up @@ -35,7 +35,7 @@
| Digital Twins | NuGet [1.4.0](https://www.nuget.org/packages/Azure.DigitalTwins.Core/1.4.0) | [docs](/dotnet/api/overview/azure/DigitalTwins.Core-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.DigitalTwins.Core_1.4.0/sdk/digitaltwins/Azure.DigitalTwins.Core/) |
| Document Intelligence | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.DocumentIntelligence/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.DocumentIntelligence-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.DocumentIntelligence_1.0.0-beta.2/sdk/documentintelligence/Azure.AI.DocumentIntelligence/) |
| Document Translation | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.Translation.Document/1.0.0)<br>NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Translation.Document/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Translation.Document-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Translation.Document_1.0.0/sdk/translation/Azure.AI.Translation.Document/)<br>GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Translation.Document_2.0.0-beta.2/sdk/translation/Azure.AI.Translation.Document/) |
| Event Grid | NuGet [4.24.0](https://www.nuget.org/packages/Azure.Messaging.EventGrid/4.24.0) | [docs](/dotnet/api/overview/azure/Messaging.EventGrid-readme) | GitHub [4.24.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventGrid_4.24.0/sdk/eventgrid/Azure.Messaging.EventGrid/) |
| Event Grid | NuGet [4.24.1](https://www.nuget.org/packages/Azure.Messaging.EventGrid/4.24.1) | [docs](/dotnet/api/overview/azure/Messaging.EventGrid-readme) | GitHub [4.24.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventGrid_4.24.1/sdk/eventgrid/Azure.Messaging.EventGrid/) |
| Event Grid Namespaces | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Messaging.EventGrid.Namespaces/1.0.0) | [docs](/dotnet/api/overview/azure/Messaging.EventGrid.Namespaces-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventGrid.Namespaces_1.0.0/sdk/eventgrid/Azure.Messaging.EventGrid.Namespaces/) |
| Event Hubs | NuGet [5.11.3](https://www.nuget.org/packages/Azure.Messaging.EventHubs/5.11.3)<br>NuGet [5.12.0-beta.1](https://www.nuget.org/packages/Azure.Messaging.EventHubs/5.12.0-beta.1) | [docs](/dotnet/api/overview/azure/Messaging.EventHubs-readme) | GitHub [5.11.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventHubs_5.11.3/sdk/eventhub/Azure.Messaging.EventHubs/)<br>GitHub [5.12.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventHubs_5.12.0-beta.1/sdk/eventhub/Azure.Messaging.EventHubs/) |
| Event Hubs - Event Processor | NuGet [5.11.3](https://www.nuget.org/packages/Azure.Messaging.EventHubs.Processor/5.11.3)<br>NuGet [5.12.0-beta.1](https://www.nuget.org/packages/Azure.Messaging.EventHubs.Processor/5.12.0-beta.1) | [docs](/dotnet/api/overview/azure/Messaging.EventHubs.Processor-readme) | GitHub [5.11.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventHubs.Processor_5.11.3/sdk/eventhub/Azure.Messaging.EventHubs.Processor/)<br>GitHub [5.12.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventHubs.Processor_5.12.0-beta.1/sdk/eventhub/Azure.Messaging.EventHubs.Processor/) |
Expand Down Expand Up @@ -123,8 +123,10 @@
| WebJobs Extensions - Event Hubs | NuGet [6.3.3](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.EventHubs/6.3.3) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.EventHubs-readme) | GitHub [6.3.3](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.EventHubs_6.3.3/sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/) |
| WebJobs Extensions - Service Bus | NuGet [5.16.1](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.ServiceBus/5.16.1) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.ServiceBus-readme) | GitHub [5.16.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.ServiceBus_5.16.1/sdk/servicebus/Microsoft.Azure.WebJobs.Extensions.ServiceBus/) |
| WebJobs Extensions - SignalR Service | NuGet [1.14.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.SignalRService/1.14.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.SignalRService-readme) | GitHub [1.14.0](https://github.com/Azure/azure-functions-signalrservice-extension/tree/v1.2.0/src/SignalRServiceExtension) |
| WebJobs Extensions - Storage | NuGet [5.3.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage/5.3.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage-readme) | GitHub [5.3.0](https://github.com/Azure/azure-webjobs-sdk/tree/master/src/Microsoft.Azure.WebJobs.Extensions.Storage) |
| WebJobs Extensions - Storage | NuGet [5.3.1](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage/5.3.1) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage-readme) | GitHub [5.3.1](https://github.com/Azure/azure-webjobs-sdk/tree/master/src/Microsoft.Azure.WebJobs.Extensions.Storage) |
| WebJobs Extensions - Web PubSub | NuGet [1.7.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.WebPubSub/1.7.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.WebPubSub-readme) | GitHub [1.7.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.WebPubSub_1.7.0/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/) |
| Functions extension for Blob Storage | NuGet [5.3.1](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/5.3.1) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs-readme) | GitHub [5.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs_5.3.1/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/) |
| Functions extension for Storage Queues | NuGet [5.3.1](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage.Queues/5.3.1) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage.Queues-readme) | GitHub [5.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Storage.Queues_5.3.1/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Queues/) |
| Provisioning | NuGet [0.3.0](https://www.nuget.org/packages/Azure.Provisioning/0.3.0) | [docs](/dotnet/api/overview/azure/Provisioning-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [0.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning_0.3.0/sdk/provisioning/Azure.Provisioning/) |
| Provisioning - App Configuration | NuGet [0.2.0](https://www.nuget.org/packages/Azure.Provisioning.AppConfiguration/0.2.0) | [docs](/dotnet/api/overview/azure/Provisioning.AppConfiguration-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [0.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppConfiguration_0.2.0/sdk/provisioning/Azure.Provisioning.AppConfiguration/) |
| Provisioning - Application Insights | NuGet [0.1.0](https://www.nuget.org/packages/Azure.Provisioning.ApplicationInsights/0.1.0) | [docs](/dotnet/api/overview/azure/Provisioning.ApplicationInsights-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [0.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.ApplicationInsights_0.1.0/sdk/provisioning/Azure.Provisioning.ApplicationInsights/) |
Expand Down Expand Up @@ -261,7 +263,7 @@
| Resource Management - Mixed Reality | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.MixedReality/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.MixedReality-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.MixedReality_1.1.0/sdk/mixedreality/Azure.ResourceManager.MixedReality/) |
| Resource Management - Mobile Network | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.MobileNetwork/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.MobileNetwork-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.MobileNetwork_1.2.0/sdk/mobilenetwork/Azure.ResourceManager.MobileNetwork/) |
| Resource Management - Monitor | NuGet [1.3.1](https://www.nuget.org/packages/Azure.ResourceManager.Monitor/1.3.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Monitor-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Monitor_1.3.1/sdk/monitor/Azure.ResourceManager.Monitor/) |
| Resource Management - MySQL | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.MySql/1.0.1)<br>NuGet [1.1.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.MySql/1.1.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.MySql-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.MySql_1.0.1/sdk/mysql/Azure.ResourceManager.MySql/)<br>GitHub [1.1.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.MySql_1.1.0-beta.5/sdk/mysql/Azure.ResourceManager.MySql/) |
| Resource Management - MySQL | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.MySql/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.MySql-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.MySql_1.1.0/sdk/mysql/Azure.ResourceManager.MySql/) |
| Resource Management - NetApp Files | NuGet [1.6.0](https://www.nuget.org/packages/Azure.ResourceManager.NetApp/1.6.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NetApp-readme) | GitHub [1.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetApp_1.6.0/sdk/netapp/Azure.ResourceManager.NetApp/) |
| Resource Management - Network | NuGet [1.8.0](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.8.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Network-readme) | GitHub [1.8.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.8.0/sdk/network/Azure.ResourceManager.Network/) |
| Resource Management - Network Analytics | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.NetworkAnalytics/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NetworkAnalytics-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkAnalytics_1.0.0/sdk/networkanalytics/Azure.ResourceManager.NetworkAnalytics/) |
Expand Down
9 changes: 7 additions & 2 deletions docs/core/extensions/logging.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Logging in C#
author: IEvangelist
description: Learn about app logging provided by the Microsoft.Extensions.Logging NuGet package in C#.
ms.author: dapine
ms.date: 03/14/2024
ms.date: 07/17/2024
---

# Logging in C# and .NET
Expand All @@ -12,7 +12,12 @@ ms.date: 03/14/2024

## Get started

This first example shows the basics, but it's only suitable for a trivial console app. In the next section you see how to improve the code considering scale, performance, configuration and typical programming patterns.
This first example shows the basics, but it's only suitable for a trivial console app. This sample console app relies on the following NuGet packages:

- [Microsoft.Extensions.Logging](https://www.nuget.org/packages/Microsoft.Extensions.Logging)
- [Microsoft.Extensions.Logging.Console](https://www.nuget.org/packages/Microsoft.Extensions.Logging.Console)

In the next section you see how to improve the code considering scale, performance, configuration and typical programming patterns.

:::code language="csharp" source="snippets/logging/getting-started/Program.cs":::

Expand Down
8 changes: 4 additions & 4 deletions docs/core/extensions/options.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Options pattern
author: IEvangelist
description: Learn the options pattern to represent groups of related settings in .NET apps. The options pattern uses classes to provide strongly-typed access to settings.
ms.author: dapine
ms.date: 06/03/2024
ms.date: 07/18/2024
---

# Options pattern in .NET
Expand Down Expand Up @@ -112,7 +112,7 @@ In the preceding code, changes to the JSON configuration file after the app has

### Options interfaces benefits

Using a generic wrapper type gives you the ability to decouple the lifetime of the option from the DI container. The <xref:Microsoft.Extensions.Options.IOptions%601.Value?displayProperty=nameWithType> interface provides a layer of abstraction, including generic constraints, on your options type. This provides the following benefits:
Using a generic wrapper type gives you the ability to decouple the lifetime of the option from the dependency injection (DI) container. The <xref:Microsoft.Extensions.Options.IOptions%601.Value?displayProperty=nameWithType> interface provides a layer of abstraction, including generic constraints, on your options type. This provides the following benefits:

- The evaluation of the `T` configuration instance is deferred to the accessing of <xref:Microsoft.Extensions.Options.IOptions%601.Value?displayProperty=nameWithType>, rather than when it is injected. This is important because you can consume the `T` option from various places and choose the lifetime semantics without changing anything about `T`.
- When registering options of type `T`, you do not need to explicitly register the `T` type. This is a convenience when you're [authoring a library](options-library-authors.md) with simple defaults, and you don't want to force the caller to register options into the DI container with a specific lifetime.
Expand Down Expand Up @@ -244,7 +244,7 @@ All options are named instances. <xref:Microsoft.Extensions.Options.IConfigureOp

## Use DI services to configure options

Services can be accessed from dependency injection while configuring options in two ways:
When you're configuring options, you can use [dependency injection](dependency-injection.md) to access registered services, and use them to configure options. This is useful when you need to access services to configure options. Services can be accessed from DI while configuring options in two ways:

- Pass a configuration delegate to [Configure](xref:Microsoft.Extensions.Options.OptionsBuilder%601.Configure%2A) on [OptionsBuilder\<TOptions>](xref:Microsoft.Extensions.Options.OptionsBuilder%601). `OptionsBuilder<TOptions>` provides overloads of [Configure](xref:Microsoft.Extensions.Options.OptionsBuilder%601.Configure%2A) that allow use of up to five services to configure options:

Expand All @@ -258,7 +258,7 @@ Services can be accessed from dependency injection while configuring options in

- Create a type that implements <xref:Microsoft.Extensions.Options.IConfigureOptions%601> or <xref:Microsoft.Extensions.Options.IConfigureNamedOptions%601> and register the type as a service.

We recommend passing a configuration delegate to [Configure](xref:Microsoft.Extensions.Options.OptionsBuilder%601.Configure%2A), since creating a service is more complex. Creating a type is equivalent to what the framework does when calling [Configure](xref:Microsoft.Extensions.Options.OptionsBuilder%601.Configure%2A). Calling [Configure](xref:Microsoft.Extensions.Options.OptionsBuilder%601.Configure%2A) registers a transient generic <xref:Microsoft.Extensions.Options.IConfigureNamedOptions%601>, which has a constructor that accepts the generic service types specified.
It's recommended to pass a configuration delegate to [Configure](xref:Microsoft.Extensions.Options.OptionsBuilder%601.Configure%2A), since creating a service is more complex. Creating a type is equivalent to what the framework does when calling [Configure](xref:Microsoft.Extensions.Options.OptionsBuilder%601.Configure%2A). Calling [Configure](xref:Microsoft.Extensions.Options.OptionsBuilder%601.Configure%2A) registers a transient generic <xref:Microsoft.Extensions.Options.IConfigureNamedOptions%601>, which has a constructor that accepts the generic service types specified.

## Options validation

Expand Down
Loading
Loading