Woher weiß Unity.Resolve, welcher Konstruktor verwendet werden soll?

Bei einer Klasse mit mehreren Konstruktoren - wie kann ich Resolve mitteilen, welcher Konstruktor verwendet werden soll?

Betrachten Sie die folgende Beispielklasse:

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; }
}

Wenn ich mit Resolve ein Objekt vom Typ Foo erstellen möchte, weiß Resolve dann, welcher Konstruktor zu verwenden ist? Und wie kann ich ihm sagen, dass er den richtigen verwenden soll? Nehmen wir an, ich habe einen Container mit einer registrierten IBar - versteht es sich, dass der Konstruktor die IBar bevorzugen sollte? Und wenn ich auch einen String spezifiziere, wird der verwendet(string, IBar) Konstrukteur?

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

Und bitte ignorieren Sie die Tatsache, dass es wahrscheinlich einfacher wäre, wenn die Klasse nur einen einzigen Konstruktor hätte ...

Antworten auf die Frage(2)

Ihre Antwort auf die Frage