Como o Unity.Resolve sabe qual construtor usar?

Dada uma classe com vários construtores - como posso dizer ao Resolve qual construtor usar?

Considere a seguinte classe de exemplo:

public class Foo
{
    public Foo() { }
    public Foo(IBar bar)
    {
        Bar = bar;
    }
    public Foo(string name, IBar bar)
    {
        Bar = bar;
        Name = name;
    }
    public IBar Bar { get; set; }        
    public string Name { get; set; }
}

Se eu quiser criar um objeto do tipo Foo usando o Resolve, como o Resolve saberá qual construtor usar? E como posso dizer para usar o caminho certo? Digamos que eu tenha um contêiner com um IBar registrado - ele entenderá que deve favorecer o construtor que está usando o IBar? E se eu especificar uma string também - ela usará o(string, IBar) construtor?

Foo foo = unityContainer.Resolve<Foo>(); 

E, por favor, ignore o fato de que provavelmente seria mais fácil se a classe tivesse apenas um construtor ...

questionAnswers(2)

yourAnswerToTheQuestion