Unity extension to integrate with Microsoft.Extensions.DependencyInjection compliant systems
- Reference the
Unity.Microsoft.DependencyInjectionpackage from NuGet.
Install-Package Unity.Microsoft.DependencyInjection
- In the
WebHostBuilderaddUseUnityServiceProvider(...)method
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseUnityServiceProvider() <---- Add this line
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});- In case Unity container configured via application configuration or by convention this container could be used to initialize service provider.
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseUnityServiceProvider(_container) <---- Add this line
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});- Add optional method to your
Startupclass
public void ConfigureContainer(IUnityContainer container)
{
// Could be used to register more types
container.RegisterType<IMyService, MyService>();
}By default ASP resolves controllers using built in activator. To enable resolution of controllers from Unity you need to add following line to MVC configuration:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddControllersAsServices(); <-- Add this line
...
}For example of using Unity with Core 3.1 Web application follow this link