unity-containerAan de slag met unit-container


Opmerkingen

De Unity Container (Unity) is een lichtgewicht, uitbreidbare injectiecontainer voor afhankelijkheid. Het vergemakkelijkt het bouwen van los gekoppelde applicaties en biedt ontwikkelaars de volgende voordelen: Vereenvoudigde objectcreatie, vooral voor hiërarchische objectstructuren en afhankelijkheden. [ https://msdn.microsoft.com/en-us/library/ff647202.aspx]

Het moet ook alle grote onderwerpen in de eenheidcontainer vermelden en naar de gerelateerde onderwerpen verwijzen. Aangezien de Documentatie voor eenheid-container nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

versies

Versie Release-opmerkingen Publicatiedatum
2.0.0 Eenheid 2 2011-05-05
2.1.0 Eenheid 2.1 2011-05-11
3.0.0 Eenheid 3 2013/04/26
3.5.0 Eenheid 3.5 2015/05/15
4.0.0 Eenheid overgedragen aan OSS-gemeenschap 2015/10/06

Constructor injectie

interface IService
{
    void ProcessRequest();
}

interface IRepository
{
    IEnumerable<string> GetData();
}

class HelloWorldRepository : IRepository
{
    public IEnumerable<string> GetData()
    {
        return new[] { "Hello", "World" };
    }
}

class HelloWorldService : IService
{
    private readonly IRepository repo;
    public HelloWorldService(IRepository repo)
    {
        this.repo = repo;
    }
    public void ProcessRequest()
    {
        Console.WriteLine(String.Join(" ", this.repo.GetData()));
    }
}

class Program
{
    static void Main(string[] args)
    {
        var container = new UnityContainer()
            .RegisterType<IRepository, HelloWorldRepository>()
            .RegisterType<IService, HelloWorldService>();

        //Unity automatically resolves constructor parameters that knows about.
        //It will return a HelloWorldService with a HelloWorldRepository
        var greeter = container.Resolve<IService>();
        //Outputs "Hello World"
        greeter.ProcessRequest();            

        Console.ReadLine();
    }
}
 

Hallo Wereld

interface IGreeter
{
    void Greet();
}

class Greeter : IGreeter
{
    public void Greet()
    {
        Console.WriteLine("Hello World");
    }
}

class SpanishGreeter : IGreeter
{
    public void Greet()
    {
        Console.WriteLine("Hola Mundo");
    }
}

class FrenchGreeter : IGreeter
{
    public void Greet()
    {
        Console.WriteLine("Bonjour le Monde");
    }
}

class Program
{
    static void Main(string[] args)
    {
        var container = new UnityContainer()
            .RegisterType<IGreeter, SpanishGreeter>("spanish")
            .RegisterType<IGreeter, FrenchGreeter>("french")
            .RegisterType<IGreeter, Greeter>();

        //Get default registration. Outputs "Hello World"
        var greeter = container.Resolve<IGreeter>();
        greeter.Greet();

        //Get specific named registration. Outputs "Hola Mundo"
        greeter = container.Resolve<IGreeter>("spanish");
        greeter.Greet();

        //Get all named registrations (excludes the default one)
        //Outputs "Hola Mundo" and "Bonjour le Monde"
        foreach (var g in container.ResolveAll<IGreeter>())
        {
            g.Greet();
        }

        Console.ReadLine();
    }
}
 

Installatie

Om te beginnen, hoeft u alleen het nuget-pakket van Unity te installeren. Voer de volgende opdracht uit vanuit de pakketbeheerconsole:

PM> Install-Package Unity
 

U kunt ook Visual Studio gebruiken om Unity op een bepaald project te installeren met behulp van de optie NuGet-pakketten beheren voor oplossing onder Extra -> NuGet-pakketbeheer.