【问题标题】:Difference between BuildUp and Resolve [duplicate]BuildUp和Resolve之间的区别[重复]
【发布时间】:2015-12-22 11:49:18
【问题描述】:

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

我对@9​​87654321@ 和Resolve 感到困惑,因为它们似乎做同样的事情,所以我不知道何时适合使用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);

【问题讨论】:

    标签: c# unity-container dependency-resolver


    【解决方案1】:

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

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

    【讨论】:

    • 我的理解是BuildUp() 用于在已经实例化的对象中注入属性。我说的对吗?
    • @EhsanSajjad - 不仅仅是属性注入,我认为它也会做方法。
    • 方法注入是什么意思?你能详细说明一下吗?
    • 您可以标记要在依赖注入时调用的方法,如果这需要进一步的依赖,这些将由容器解决。毫无疑问,文档中有更多信息。
    • 我可以删除我的问题,因为这里已经回答了
    猜你喜欢
    • 2021-05-04
    • 2019-12-16
    • 1970-01-01
    • 2011-01-04
    • 2014-08-16
    • 2011-04-08
    • 2012-11-24
    • 2013-06-05
    • 2021-09-29
    相关资源
    最近更新 更多