19 lines
1.6 KiB
Markdown
19 lines
1.6 KiB
Markdown
<a name="csc"></a>
|
|
|
|
Consider the following `ConfigureServices` method, which registers services and configures options:
|
|
|
|
[!code-csharp[](~/fundamentals/configuration/index/samples/3.x/ConfigSample/Startup2.cs?name=snippet)]
|
|
|
|
Related groups of registrations can be moved to an extension method to register services. For example, the configuration services are added to the following class:
|
|
|
|
[!code-csharp[](~/fundamentals/configuration/index/samples/3.x/ConfigSample/Options/MyConfigServiceCollectionExtensions.cs)]
|
|
|
|
The remaining services are registered in a similar class. The following `ConfigureServices` method uses the new extension methods to register the services:
|
|
|
|
[!code-csharp[](~/fundamentals/configuration/index/samples/3.x/ConfigSample/Startup4.cs?name=snippet)]
|
|
|
|
**_Note:_** Each `services.Add{GROUP_NAME}` extension method adds and potentially configures services. For example, <xref:Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddControllersWithViews%2A> adds the services MVC controllers with views require, and <xref:Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddRazorPages%2A> adds the services Razor Pages requires. We recommend that apps follow the naming convention of creating extension methods in the <xref:Microsoft.Extensions.DependencyInjection?displayProperty=fullName> namespace. Creating extension methods in the `Microsoft.Extensions.DependencyInjection` namespace:
|
|
|
|
* Encapsulates groups of service registrations.
|
|
* Provides convenient [IntelliSense](/visualstudio/ide/using-intellisense) access to the service.
|