【发布时间】:2015-12-22 11:49:18
【问题描述】:
我正在玩 Unity Library,因为在我的工作场所它被高度使用,所以想了解它的不同行为。
我对@987654321@ 和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