2009-06-02 4 views
2

Ich beginne gerade mit der Fluent-Registrierung für Castle Windsor und finde heraus, wie ich Eigenschaften referenzieren kann, die ich im Eigenschaftsbereich von XML definiert habe Konfigurationsdatei bei der Registrierung. Also habe ich diesen Code um eine Komponente zu registrieren.Castle Windsor Fluent API: Wie man einen Komponentenparameterwert auf eine konfigurierte Eigenschaft setzt

RegisterComponent(componentId, Component.For<ConnectionConfig>() 
      .ImplementedBy(typeof(ConnectionConfig)) 
      .Named(componentId) 
      .LifeStyle.Singleton 
      .Parameters(
       Parameter.ForKey("ConnectionId").Eq(connectionId), 
       Parameter.ForKey("CommandTimeoutSeconds").Eq("#{ConnectionInfo.DefaultTimeout}"))); 

Die # {ConnectionInfo.DefaultTimeout} ist eine Eigenschaft, die ich in der XML-Konfigurations definiert haben, die in den Behälter vor der Fluent-Registrierungen geladen wird, aber das funktioniert nicht, in diesem Code der Parameter Gl geben() wird als Literal behandelt (obwohl dies für andere Komponenten funktioniert, zB $ {My.Component} würde funktionieren)

Irgendwelche Ideen, wie ich Eigenschaften aus meiner Konfigurationsdatei referenzieren kann während ich Komponenten über die neue Fluent API registriere?

Dank

Antwort

1

Neuere Versionen von Windsor (3.x) haben ein für diese Unterstützung in-built:

Component.For<Foo>().DependsOn(Dependency.OnAppConfigValue("someValue")) 
Verwandte Themen