我正在玩 Unity Library,因为在我的工作场所它被高度使用,所以想了解它的不同行为。
我很困惑BuildUp
,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);