Register Services in the Dependency Injection Container
- 2 minutes to read
Register services required for your Controller in the dependency injection container. For this purpose, use IServiceCollection.
- ASP.NET Core Blazor
Use the
servicesparameter of theStartup.ConfigureServicesmethod in the YourApplicationName.Blazor.Server\Startup.cs file:public void ConfigureServices(IServiceCollection services) { //... services.AddSingleton<IServiceOne, ConcreteServiceOne>(); services.AddTransient<IServiceTwo, ConcreteServiceTwo>(); //... }- Windows Forms
To access the collection, use the Services property of the application builder object. The WinApplication.CreateBuilder method creates this object in the YourApplicationName.Win\Startup.cs file:
var builder = WinApplication.CreateBuilder(); builder.Services.AddSingleton<IServiceOne, ConcreteServiceOne>(); builder.Services.AddTransient<IServiceTwo, ConcreteServiceTwo>();
Access Services Using XafApplication
You can use XafApplication.ServiceProvider property to obtain services from a built-in service container. The following code sample demonstrates how to access ICaptionHelperProvider:
public class YourViewController : ViewController {
protected override void OnActivated() {
base.OnActivated();
var caption = Application.ServiceProvider.GetService<ICaptionHelperProvider>().GetCaptionHelper().GetActionCaption("SaveAndNew");
}
}
For information about access to services in Business Objects, refer to the following topic: Write Business Object Code that Accesses Services (Use Session or IObjectSpace).
Dependency Injection with Third-party Inversion of Control (IoC) Service Containers
In XAF Blazor, Web API Service, and Windows Forms .NET applications, you can register your favorite .NET IoC library instead of Microsoft’s IServiceProvider. For this purpose, you can call the UseServiceProviderFactory extension method of the application builder class.
var builder = WinApplication.CreateBuilder();
builder.UseServiceProviderFactory(new AutofacServiceProviderFactory());
// OR
// builder.UseServiceProviderFactory(new DryIoCServiceProviderFactory());