0

我正在玩 Unity Library,因为在我的工作场所它被高度使用,所以想了解它的不同行为。

我很困惑BuildUpResolve因为他们似乎做同样的事情,所以我不知道什么时候适合BuildUp使用Resolve

我错过了什么吗?

这是示例:

public class Decorations
{
    public string Header { get; set; }

    public string Footer { get; set; }
}

public class Printer
{
    internal void Print(string message)
    {
        Console.WriteLine("HEADER: {0}", this.Decorations != null
            && this.Decorations.Header != null
                ? this.Decorations.Header
                : string.Empty);
        Console.WriteLine(message);
        Console.WriteLine("FOOTER: {0}", this.Decorations != null
            && this.Decorations.Footer != null
                ? this.Decorations.Footer
                : string.Empty);
    }

    [Dependency]
    public Decorations Decorations { get; set; }
}

public class ClassA
{
    public void Print(Printer printer, IUnityContainer container)
    {
        container.BuildUp(printer);
        printer.Print("Hello from ClassA");
        container.Teardown(printer);
    }
}

使用示例Resolve<T>()

        var printer = new Printer();

        var containerA = new UnityContainer();
        containerA.RegisterInstance(new Decorations
        {
            Header = "I am HEADER from Decorations #1",
            Footer = "I am FOOTER from Decorations #1"
        });

        var a = new ClassA();

        var objClassA = containerA.Resolve<Decorations>();

这是使用示例BuildUp()

        var printer = new Printer();

        var containerA = new UnityContainer();
        containerA.RegisterInstance(new Decorations
        {
            Header = "I am HEADER from Decorations #1",
            Footer = "I am FOOTER from Decorations #1"
        });


        var a = new ClassA();

        var objClassA = containerA.Resolve<Decorations>();

        a.Print(printer, containerA);
4

1 回答 1

2

Resolve用于实例化对象的实例,并注入依赖项。

BuildUp用于将依赖项注入到对象的现有实例中。

于 2015-12-22T11:52:12.470 回答