Unity extension to integrate with Microsoft.Extensions.DependencyInjection compliant systems
Unity.Microsoft.DependencyInjection
package from NuGet.Install-Package Unity.Microsoft.DependencyInjection
WebHostBuilder
add UseUnityServiceProvider(...)
methodpublic static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseUnityServiceProvider() <---- Add this line
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseUnityServiceProvider(_container) //<---- Add this line
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
Startup
classpublic 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.AddMvc()
.AddControllersAsServices() //<-- Add this line
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
...
}
For example of using Unity with Core 3.1 Web application follow this link
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information, see the .NET Foundation Code of Conduct
See the Contributing guide for more information.
Unity Container is a .NET Foundation project