tlyau62 / microsoft-dependency-injection

Unity.Microsoft.DependencyInjection package

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build status License NuGet NuGet

Unity.Microsoft.DependencyInjection

Unity extension to integrate with Microsoft.Extensions.DependencyInjection compliant systems

Getting Started

  • Reference the Unity.Microsoft.DependencyInjection package from NuGet.
Install-Package Unity.Microsoft.DependencyInjection

Registration:

  • In the WebHostBuilder add UseUnityServiceProvider(...) 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 Startup class
public void ConfigureContainer(IUnityContainer container)
{
  // Could be used to register more types
  container.RegisterType<IMyService, MyService>();
}

Resolving Controllers from Unity

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
    ...
}

Examples

For example of using Unity with Core 3.1 Web application follow this link

About

Unity.Microsoft.DependencyInjection package

License:Apache License 2.0


Languages

Language:C# 100.0%