2016-07-22 30 views
2

Lassen Sie uns sagen, ich habe ISettings mit einer Eigenschaft string Setting1 und ich habeIst es in Castle Windsor möglich, einen Dienst mit Abhängigkeit von Eigentum einer anderen Komponente zu machen?

public class MyComponent : IMyService 
{ 
    public MyComponent(string setting1) 
    { 
     // set fields 
    } 
} 

Ist es möglich, Windsor verkabeln zu sagen, dass ISettings.Setting1 verwendet werden sollte, um die Abhängigkeit von MyComponent zu befriedigen?

+1

Ja, es ist möglich. Siehe http://kozmic.net/2010/02/15/new-castle-windsor-feature-ndash-typed-arguments/ aber warum sollte 'MyComponent' nicht einfach'ETettings' als Konstruktorparameter verwenden? –

+0

@PhilDegenhardt - wollen Sie Kredit für die Bereitstellung dieses Links? Wenn Sie es als Antwort veröffentlichen, werde ich es als akzeptiert markieren. – Kir

Antwort

1

Ich würde 2 Optionen vorschlagen.

Verwenden Sie zuerst ISettings als Abhängigkeit und Einst.1 verwenden, wo notwendig

public class MyComponent : IMyService 
{ 
    public MyComponent(ISettings settings) 
    { 
     // access settings.Setting1 
    } 
} 

Zweitens Windsor .DependsOn Funktion einige primitive Eigenschaften Komponente zu übergeben.

container.Register(
       Component.For<IMyService >() 
       .ImplementedBy<MyComponent >() 
       .DependsOn(Dependency.OnValue("setting1", ISettingsInstance.Setting1));